문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
- s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
풀이 방법
1. min과 max를 문자열 s 안에 있는 첫 번째 숫자로 초기화시킨다.
2. 문자열에 담긴 마지막 숫자를 temp에 담아 비교하기 위해 아래 if문의 조건에 부합하도록 s에 공백을 더해준다.
3. 이후 s[i]가 공백이 아닐 때까지 temp에 담고 공백이라면 min, max와 비교한다.
4. min과 max를 "최솟값 최댓값" 형태의 문자열로 리턴
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
int min = stoi(s.substr(0,s.find(' ')));
int max = stoi(s.substr(0,s.find(' ')));
string temp = "";
s += " ";
for(int i = 0; i < s.length(); i++){
if(s[i] != ' ')
temp += s[i];
else {
if(min >= stoi(temp))
min = stoi(temp);
if(max <= stoi(temp))
max = stoi(temp);
temp.clear();
}
}
return to_string(min) + " " + to_string(max);
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
올바른 괄호/C++ (0) | 2023.01.05 |
---|---|
숫자의 표현/C++ (0) | 2023.01.05 |
이진 변환 반복하기/C++ (0) | 2023.01.05 |
행렬의 곱셈/C++ (0) | 2023.01.04 |
JadenCase 문자열 만들기/C++ (0) | 2023.01.04 |