LeeTaes 공부노트

[프로그래머스/C++ 문제 풀이] Lv. 2 - 최댓값과 최솟값 본문

코딩테스트/프로그래머스 (Lv. 2)

[프로그래머스/C++ 문제 풀이] Lv. 2 - 최댓값과 최솟값

리태s 2024. 8. 19. 08:50
728x90
반응형

문제 설명

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

제한 사항

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

입출력 예


문제 풀이

이번 문제는 문자열을 잘 다룰 수 있는지 체크하는 문제였습니다.

주어진 문자열의 공백(" ")을 기준으로 숫자들을 분리하고, 최대값과 최소값을 계산하면 되는 간단한 문제였습니다.

정답 코드

더보기

풀이 시간 : 17m 56s

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    string answer = "";

    int mxValue = -987654321;
    int mnValue = 987654321;
    
    // 문자열 s에서 공백(" ")을 발견할 수 없을 때까지 반복
    while(!s.empty() && s.find(" ") != string::npos)
    {
        int temp = stoi(s.substr(0, s.find(" ")));
        
        // 최대 최소 비교
        if (mxValue < temp)
            mxValue = temp;
        
        if (mnValue > temp)
            mnValue = temp;
        
        s.erase(0, s.find(" ") + 1);
    }
    
    // 마지막 남은 숫자 비교
    int temp = stoi(s.substr(0, s.find(" ")));
     
    if (mxValue < temp)
        mxValue = temp;
        
    if (mnValue > temp)
        mnValue = temp;
    
    // 최소값 최대값 순으로 결과 문자열에 추가
    answer += to_string(mnValue);
    answer += " ";
    answer += to_string(mxValue);

    return answer;
}
728x90
반응형