-
[프로그래머스] 튜플문제 풀이 2020. 5. 27. 18:26
풀이)
주의할 점은 튜플의 집합 내의 원소 순서가 달라질 수 있다는 점이다.
따라서, 원소의 수가 적은 집합부터 원소를 확인해야 할 필요가 있는 문제이다.
그래서 문자열을 집합대로 자른 뒤 길이 별로 정렬한 뒤 원소를 확인해줬다.
나같은 경우는 {}안에 것을 모두 함께 뭉쳤다.(,도 포함해서)
중복되는 원소는 bool visited[100001]을 통해서 확인해줬다.
코드)
#include <string> #include <vector> #include<iostream> #include<algorithm> using namespace std;
bool visited[100001];//중볻되는 원소 체크 bool cmp(const string &a, const string &b){ return a.length() < b.length(); } vector<int> solution(string s) { vector<int> answer; vector <string> element; for(int i=2;i<s.length()-1;i++){ string temp =""; while(s[i] != '}'){ temp += s[i]; i++; } element.push_back(temp); i+=2; } sort(element.begin(),element.end(),cmp); // 길이별로 정렬 for(int i=0;i<element.size();i++){ //cout << element[i] << endl; string temp =""; for(int j=0;j<element[i].size();j++){ if(element[i][j] == ','){ int val = stoi(temp); temp =""; if(visited[val])continue; //만일 이전에 확인했던 원소면 pass visited[val] = true; answer.push_back(val); // cout << val <<"ㅡ "; } else{ temp += element[i][j]; } } int val = stoi(temp); if(visited[val])continue; visited[val] = true; answer.push_back(val); //cout << val <<"ㅡ "<<endl; } return answer; }
'문제 풀이' 카테고리의 다른 글
[프로그래머스] 기둥과 보 (0) 2020.05.28 [프로그래머스] 폰켓몬 (0) 2020.05.28 [프로그래머스] 자물쇠와 열쇠 (0) 2020.05.27 [프로그래머스] 문자열 압축 (0) 2020.05.26 [프로그래머스] 카카오 프렌즈 컬러링북 (0) 2020.05.26