짱아의 개발 기록장

2019 카카오 개발자 겨울 인턴십 : 튜플(c++) / 구현 본문

Algorithm/카카오 기출

2019 카카오 개발자 겨울 인턴십 : 튜플(c++) / 구현

jungahshin 2021. 3. 14. 17:28
반응형

각각의 원소의 개수가 가장 많은 것이 첫 번째 수, 그다음 많은 것이 두 번째 수.....

이러한 규칙이 생기는 것을 알 수 있었다.

 

ex) "{{1,2,3},{2,1},{1,2,4,3},{2}}" => 2(4번), 1(3번), 3(2번), 4(1번) => (2, 1, 3, 4) 형태의 튜플 완성

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
map<intint> m;
vector<int> kind;
 
vector<int> solution(string s) {
    vector<int> answer;
    
    string temp = "";
    for(int i=0; i<s.size(); i++){
        if(s[i]=='{' || s[i]=='}'continue;
        if(s[i]==','){
            if(m.count(stoi(temp))==0){
                kind.push_back(stoi(temp));
                m[stoi(temp)] = 1;
            }else{
                m[stoi(temp)]++;
            }
            temp = "";
            continue;
        }
        temp += s[i];
    }
    
    if(m.count(stoi(temp))==0){
        kind.push_back(stoi(temp));
        m[stoi(temp)] = 1;
    }else{
        m[stoi(temp)]++;
    }
    
    vector<pair<intint>> v;
    for(int i=0; i<kind.size(); i++){
        v.push_back(make_pair(m[kind[i]], kind[i]));
    }
    
    sort(v.begin(), v.end());
    
    for(int i=v.size()-1; i>=0; i--){
        answer.push_back(v[i].second);
    }
 
    
    return answer;
}
cs
반응형
Comments