Lv2. 프로그래머스 최댓값과 최솟값

💡문제 요약

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

예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.

제한 조건

입출력 예

s return
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

💡알고리즘 설계

공백으로 수를 구분해서 vector에 차례대로 넣어준다.

오름차순으로 정렬해준다.

오름차순으로 정렬하면 맨 앞은 최솟값, 맨 뒤는 최댓값이 되기 때문에 font와 back으로 값을 찾는다.

💡코드

#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 = "";
        }
        else{
            tmp += s[i];
        }
    }
    v.push_back(stoi(tmp));
    
    sort(v.begin(), v.end());
    answer = to_string(v.front()) + " " + to_string(v.back());
    
    return answer;
}

💡시간 복잡도