[PS] 최댓값과 최솟값

강건우·2026년 9월 22일

[programmers]

목록 보기
2/14

문제

해결법

입출력예시를 치사하게 한자리 숫자로 들어서 착각하게 유도하는 문제. 당연히 N자리 숫자가 올 수 있다. 따라서 순회하면서 체크하면 당연히 틀리고, 공백을 기준으로 파싱한 문자열들을 stoi 함수로 interger로 변환한 후 크기 비교를 하는게 답이라고 생각했는데, 아쉽게도 C++ 에 문자열 파싱이 그렇게 좋지 않아서 s.find()로 공백이 나오는 idx를 찾고 -> [0:idx-1] 문자를 정수로 치환해서 -> min, max 값을 갱신하고 마지막으로 min max값을 answer에 더하면 완성이다.

이 문제를 풀기 위해선 아래 항목들을 알고 있어야 한다

https://en.cppreference.com/cpp/string/basic_string/stol
https://en.cppreference.com/cpp/string/basic_string/find
https://en.cppreference.com/cpp/string/basic_string/to_string

소스코드

// Authored by: prid1306
#include <string>
#include <vector>

using namespace std;
int _min = 1e9;
int _max = -1e9;
void updateminmax(int num)
{
    _min = std::min(_min, num);
    _max = std::max(_max, num);
}

string solution(string s) {
    string answer = "";
    
    while(s.length() != 0)
    {
        size_t pos = s.find(' ');
        if(pos == string::npos)
        {
            updateminmax(stoi(s));
            break;
        }
        int num = stoi(s.substr(0, pos));
        updateminmax(num);
        s = s.substr(pos + 1, s.length());
    }
    answer = to_string(_min) + " " + to_string(_max);
    return answer;
}
profile
잠시 숨을 고르는 청년

0개의 댓글