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

YH J·2023년 6월 8일
0

프로그래머스

목록 보기
126/168

문제 링크

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

내 풀이

stringstream을 이용하여 파싱하였다. vector에 옮겨 담은 뒤 sort하고 맨 앞과 맨 뒤를 string으로 변환하여 answer에 넣었다.

내 코드

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

string solution(string s) {
    string answer = "";
    stringstream ss;
    ss.str(s);
    vector<int> vec;
    int num;
    while(ss)
    {
        ss >> num;
        vec.push_back(num);
    }
    sort(vec.begin(),vec.end());
    answer += to_string(vec.front()) + ' ';
    answer += to_string(vec.back());
    return answer;
}

다른 사람의 풀이

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

string solution(string s) {
    string answer = "";
    string sTemp = "";
    vector<int> vecInteger;

    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] == ' ')
        {
            vecInteger.push_back(stoi(sTemp));
            sTemp.clear();
            continue;
        }

        sTemp += s[i];
    }

    vecInteger.push_back(stoi(sTemp));

    sort(vecInteger.begin(), vecInteger.end());

    answer += to_string(vecInteger.front());
    answer += ' ';
    answer += to_string(vecInteger.back());

    return answer;
}
//////////////////////////////////////////
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>

using namespace std;

string solution(string s) {
    string answer = "";
    string token;
    istringstream iss(s);
    vector<int> num;

    while(getline(iss, token, ' '))
    {
          num.push_back(stoi(token));
    }

    sort(num.begin(), num.end());

    answer = to_string(num.front()) + " " + to_string(num.back());

    return answer;
}

다른 사람의 풀이 해석

string을 한글자씩 분해하면서 파싱하는 방법의 정답도 있고
istringstream을 사용한 파싱도 있다. getline -> 공백 대신 다른 글자를 기준으로 파싱도 가능

profile
게임 개발자 지망생

0개의 댓글