Programmers 64065 튜플

로고 이미지

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/64065

나의 풀이

  1. 각 원소가 몇번 나오는지를 센다
  2. 가장 많이 나오는 원소가 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;
}

채점결과

42586


© 2020. All rights reserved.

Powered by Hydejack v8.4.0