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

 

https://school.programmers.co.kr/learn/courses/30/lessons/12939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

 

해결전략

 

string, stoi, atoi

 

 


 

 

코드

 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(string s) 
{
    string answer = "";
            
    string tmp = "";
    vector<int> v;

    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] == ' ')
        {
            v.push_back(stoi(tmp));
            tmp.clear();
        }
        else
        {
            tmp += s[i];
        }
    }

    v.push_back(stoi(tmp));
    
    minNum = *min_element(v.begin(), v.end());
    maxNum = *max_element(v.begin(), v.end());

    answer = to_string(minNum) + " " + to_string(maxNum);

    return answer;
}

 

위의 코드에서는 

#include <algorithm> 를 넣은 후

  • *min_element(v.begin(), v.end());
  • *max_element(v.begin(), v.end());

을 사용하여 최값과 최댓값을 구했다.

 

 

#include <algorithm> 헤더를 넣고

sort(v.begin(), v.end());
answer = to_string(v.front()) + " " + to_string(v.back());

위와 같이 오름차순 정렬을 한 후 첫번째 값과 마지막 값을 사용하여 최솟값과 최댓값을 넣을 수도 있다.

 

 

 

※ 주의할 점

int minNum = INT_MAX;

int maxNum = INT_MIN;

이유는 알 수 없지만 프로그래머스에서 INT_MAX, INT_MIN를 사용하면 정상적으로 통과되지 않는다.

 


 

 

 

 

코드 - 다른 풀이 방법

 

#include <string>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;

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

    stringstream SS(s);

    string tmp = "";
    vector<int> v;

    while (SS >> tmp) 
    {
        v.push_back(stoi(tmp));
    }

    sort(v.begin(), v.end());
    answer = to_string(v.front()) + " " + to_string(v.back());

    return answer;
}