Programmers 64065 튜플
in Algorithm
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/64065
나의 풀이
- 각 원소가 몇번 나오는지를 센다
- 가장 많이 나오는 원소가 a1, 그 다음 많이 나오는 원소가 a2 …
ex) { {1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2} } 일 때
원소 2는 4번, 1은 3번, 3은 2번, 4는 1번 등장하므로 튜플은 (2, 1, 3, 4) 인 것을 알 수 있다.
풀이 코드 : 64065 튜플
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool compare(vector<int> a, vector<int> b){
return a.size()<b.size();
}
int num[100001];
vector<int> solution(string s) {
vector<int> answer;
vector<int> set;
vector<int> temp;
bool in = false;
int start_idx, size;
for(int i=1;i<s.size()-1;i++){
if(s[i] == '{'){
in = true;
temp.clear();
size = 0;
start_idx = i+1;
}
else if(s[i] == '}'){
in = false;
temp.push_back(stoi(s.substr(start_idx, size)));
num[stoi(s.substr(start_idx, size))]++;
if(set.size() < temp.size()){
set = temp;
}
}
else if(in && s[i] == ','){
temp.push_back(stoi(s.substr(start_idx, size)));
num[stoi(s.substr(start_idx, size))]++;
start_idx = i+1;
size = 0;
}
else if(s[i] != ',') size++;
}
answer.resize(set.size());
for(int i=0;i<set.size();i++){
answer[set.size()- num[set[i]]] = set[i];
}
return answer;
}