#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string s) {
string answer = "";
vector<int> rng;
int tmp=0;
int check=0;
for(int i=0;i<s.size();i++){
if(s[i]==' '){
if(check==1)
rng.push_back(tmp*(-1));
else
rng.push_back(tmp);
tmp=0;
check=0;
}
else if(s[i]=='-')
check=1;
else{
tmp=tmp*10+(s[i]-'0');
}
if(i==(s.size()-1)){if(check==1)
rng.push_back(tmp*(-1));
else
rng.push_back(tmp);
tmp=0;
check=0;}
}
sort(rng.begin(),rng.end());
answer+=to_string(rng[0]);
answer+=" ";
answer+=to_string(rng[rng.size()-1]);
return answer;
}
이 문제는 문자열을 공백을 기준으로 나누어 숫자들을 비교해 주어야한다. 문자열을 숫자로 비교해주기 위해서 문자가 숫자일 경우, '-'부호일 경우, 공백일 경우로 나누어 생각하였다.
공백일 경우
저장한 tmp를 벡터에 추가해주고 부호를 나타내는 check와 숫자를 저장하는 tmp는 모두 0으로 초기화
'-'부호인 경우
부호를 나타내는 check변수에 1대입
숫자인 경우
tmp에 저장되어있던 숫자에 10을 곱하고 더해줌
++공백을 기준으로 숫자를 벡터에 추가해 주었지만, 마지막 요소일 경우에는 바로 벡터에 추가해주어야함
++음수일 경우, 한자리 숫자가 아닌 경우를 생각해 주어야함
rng벡터에 저장된 숫자들을 sort함수로 정렬 시킨 후 int형인 첫번째 요소와 마지막 요소를 to_string함수로 변환하여 answer에 더해주었다.
반응형
'알고리즘 문제 > C++' 카테고리의 다른 글
[프로그래머스] Level2 : 프린터 - C++ (0) | 2020.12.18 |
---|---|
[백준] 9012번 : 괄호 - C++ (0) | 2020.12.17 |
[프로그래머스] Level2 : 스킬트리 - C++ (0) | 2020.07.10 |
[프로그래머스] Level2 : [1차] 뉴스 클러스터링 - C++ (0) | 2020.07.06 |
[프로그래머스] Level1 : [1차]다트 게임 - C++ (0) | 2020.07.06 |