본문 바로가기
개발/Coding Test

[프로그래머스 C++ Lv2] 최댓값과 최솟값

by Eunduck 2022. 6. 6.
728x90

안녕하십니까. Eun🦆입니다.

풀이법 입니다.

 

 

코딩테스트 연습 - 최댓값과 최솟값

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를

programmers.co.kr

#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string s) {
    string answer = "";
    int arr[s.length()];
    int cnt = 0;
    for(int i=0;i<s.length();i++)
    {
        if(s[i]=='-')
        {
            //printf("-");
            arr[cnt] = -1;
        }
        else if(s[i]==' ')
        {
            //printf(" ");
            cnt++;
        }
        else // number
        {
            if(s[i-1]=='-' & i>0)
            {
                arr[cnt] = arr[cnt] * (s[i]-'0');
                //printf("check point1, arr[%d]=%d\n",cnt,arr[cnt]);
            }
            else if(s[i-1]!='-' & s[i-1]!=' ' & i>0)
            {
                //printf("check point2(1), arr[%d]=%d\n",cnt,arr[cnt]);
                if(arr[cnt]>0)
                    arr[cnt] = arr[cnt] * 10 + s[i]-'0';
                else
                    arr[cnt] = arr[cnt] * 10 - (s[i]-'0');
                //printf("check point2(2), arr[%d]=%d\n",cnt,arr[cnt]);
            }
            else
            {
                arr[cnt] = s[i]-'0';
                //printf("check point3, arr[%d]=%d\n",cnt,arr[cnt]);
            }
            //printf("%c",s[i]);
        }
    }
    /*printf("\n");
    for(int i=0;i<cnt+1;i++)
    {
        printf("arr[%d]=%d\n",i,arr[i]);
    }*/
    sort(arr,arr+cnt+1);
    /*for(int i=0;i<cnt+1;i++)
    {
        printf("arr[%d]=%d\n",i,arr[i]);
    }*/
    string temp1 = to_string(arr[0]);
    string temp2 = " ";
    string temp3 = to_string(arr[cnt]);
    answer = temp1+temp2+temp3;
    return answer;
}

 

네이버 블로그 리뉴얼입니다.

(https://blog.naver.com/unsuk1/221953647587)

728x90

댓글