본문 바로가기
알고리즘

[알고리즘] c++ cpp 튜플

by keel_im 2020. 10. 22.
반응형

포인트

1. 튜플이라는 문제지만 튜플을 사용하지는 않습니다. 

2. 문제의 핵심은 문자열 처리를 할 수 있는가 입니다. 저는 끝문자와 처음 문자를 그냥 없앴습니다. 

🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. 

#include <string>
#include <vector>
#include <set>
#include <algorithm>

using namespace std;


vector<int> solution (string s) {
	vector<int> answer;
	s.erase (s.begin ());
	s.erase (s.end () - 1);

	vector<int> temp;
	vector<pair<int, vector<int>>> vc;
	int num=0;
	for (int i=0; i < s.size (); i++) //처음의 { 과 }는 무시
	{
		if (s[i] == '{') continue; // 그냥 통과
		if (s[i] == '}') { //완성됐으니깐
			temp.push_back (num);
			vc.push_back ({ temp.size (), temp });
			num=0;
			temp.clear (); 
		}
		else if (s[i] == ',') {

			if (s[i - 1] == '}') continue;

			else {
				temp.push_back (num);
				num=0;
			}
		}
		else {
			num*=10;
			num+=(s[i] - '0');//숫자로 바꾸고 넣어주는 것
		}

	}

	sort (vc.begin (), vc.end ()); //오름차순 정렬

	set<int> res;
	for (auto p : vc) {
		for (auto ele : p.second) {
			if (res.find (ele) == res.end ()) { //만일 없으면 
				res.insert (ele);
				answer.push_back (ele);
			}
		}
	}

	return ;
}

 

반응형

댓글