반응형
https://programmers.co.kr/learn/courses/30/lessons/64065
풀이
이 문제를 읽고 우선 원소의 개수 순서대로 정렬해야할 필요가 있다는 생각을 했다.
- 벡터에 {} 단위로 잘라서 길이와 해당 string을 저장한다.
- 이때 사용하는 벡터는 vector<pair<int, string>> save 의 형태이다. (길이와 해당 문자열 저장해야하므로)
- 벡터를 오름차순 정렬한다.
- 벡터의 string을 순서대로 삭제하면서 읽고 아직 answer 벡터에 저장되지 않은 숫자 발견시 push_back해준다.
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
string temp;
vector<pair<int, string>> save;
int num;
for(int i=0; i<s.length(); i++){
if(s[i] == '{'){
temp = "";
}
else if(s[i] == '}'){
if (temp.length()!=0){
save.push_back(make_pair(temp.length(), temp));
temp="";
}
}
else{
temp = temp+s[i];
}
}
sort(save.begin(), save.end());
for(int i=0; i<save.size(); i++){
int j=0;
while(j < save[i].first){
sscanf(save[i].second.c_str(),"%d", &num); //숫자 하나씩
save[i].second.erase(0, to_string(num).length()+1); //그 숫자 지움
j+=to_string(num).length()+1;
vector<int>::iterator it;
it = find(answer.begin(), answer.end(), num);
if(it==answer.end()) //아직 벡터에 없을 때만 추가
answer.push_back(num);
}
}
return answer;
}
728x90
반응형
'알고리즘 > PS - 프로그래머스' 카테고리의 다른 글
[프로그래머스 - C++] 단어 변환 (0) | 2021.07.10 |
---|---|
[프로그래머스 - C++] 불량 사용자 (0) | 2021.07.09 |
[프로그래머스 - C++] 괄호 변환 (0) | 2021.07.09 |
[프로그래머스 - C++] 더 맵게 (0) | 2021.07.09 |
[프로그래머스 - C++] 오픈채팅방 (0) | 2021.07.09 |