https://github.com/GyungSikHan/AlgorithmTest/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/12939.%E2%80%85%EC%B5%9C%EB%8C%93%EA%B0%92%EA%B3%BC%E2%80%85%EC%B5%9C%EC%86%9F%EA%B0%92
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string s) {
string answer = "";
vector<int> v;
bool b{};
string temp{};
for (int i = 0; i < s.size(); i++)
{
if (s.at(i) == ' ')
{
v.push_back(stoi(temp));
temp = "";
}
else
temp += s.at(i);
}
v.push_back(stoi(temp));
sort(v.begin(), v.end());
string mi = to_string(v[0]);
string ma = to_string(v[v.size() - 1]);
answer = mi + " " + ma;
return answer;
}
- Vector를 활용하지 않고 mi, max를 저장하는 식으로 풀었는데 테스트 케이스는 통과했지만 채점에서는 모두 세그먼트오류였나? 가 뜨면서 문제풀이를 수정해야했다
- for문안에 if문이 많아 거기서 생각지 않은 예외가 생겨서 그런것 같아 if문을 최대한 줄이고 string안에 숫자들을 vector에 저장하여 해결하려했다
- for문안에서 현재 문자가 공백 문자가 아니라면 string 변수에 누적해 저장하고, 공백문자일때 현재 temp를 stoi를 통해 정수로 변경해여 vector안에 저장해준다
- 이 과정을 거치고, 마지막 숫자가 vector에 저장이 안되므로, for문이 끝나고 vector안에 temp를 정수로 변경해 저장해준다
- 그 후 sort를 통해 오름차순 정렬을 해주고, min, max를 문자열로 저장할 변수에 to_string을 통한 형변환을 이용해vector의 처음 값과 마지막 값을 저장해, 이 값들을 answer 에 저장해주면 쉽게 풀리는 문제이다