[Programmers] Level2 : 최댓값과 최솟값
Question
Solution
-
string s에 대하여 for 루프 iterator로 하나씩 확인한다. (it 사용 이유는 뒤에)
공백이 아닐땐 string temp에 부호 또는 숫자를 넣는다.
공백이면 temp를 int로 바꾸는 stoi로 vector에 push_back()한다. it이 end에 도달하면 temp에 담긴 문자를 vector에 넣을 수 있도록 if문을 추가시키고 해당 for문을 break 시킨다.
(it이 아닌 인덱스를 사용할 경우는 for문 바로 다음에 temp를 vector에 넣는 구문 추가 할 것) -
min_element()와 max_element()를 이용하여 최소 최대를 구하고 string으로 변환 후 answer에 넣는다.
Cord
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string s)
{
string answer = "";
vector<int> data;
string temp = "";
for (auto it = s.begin(); ; it++)
{
// it이 end에 도달하면 temp를 data에 넣고 끝내기
if (it == s.end())
{
data.push_back(stoi(temp));
temp = "";
break;
}
// 공백이면 data에 넣고 temp 초기화
if (*it == ' ')
{
data.push_back(stoi(temp));
temp = "";
}
else // 공백이 아니면 temp에 넣기
{
temp += *it;
}
}
// 최대, 최소 찾기
string min = to_string(*min_element(data.begin(), data.end()));
string max = to_string(*max_element(data.begin(), data.end()));
answer += min;
answer += ' ';
answer += max;
return answer;
}