[Programmers] 튜플

김민석·2021년 10월 2일
0

프로그래머스

목록 보기
11/30

특정 원소를 갖는 원본 튜플을 구하는 문제이다.

문제풀이 전략
중복되는 원소가 없다는 점을 이용하면 굉장히 쉽다.

원소들이 주어지기 때문에 각 원소들 중 가장 많이 나타나는 순서대로 나열하면 답이 된다.

  • sort를 사용하여 역순으로 정렬하기
    sort는 작은것부터 큰 순으로 정렬되기 때문에 비교 대상이 되는 값에 -를 곱하여 음수로 만든 후 sort를 하면 값이 큰것부터 정렬할 수 있다.
  • sort 를 사용한 후 reverse를 사용하면 역순으로 정렬할 수 있다.

코드

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>


using namespace std;


vector<int> solution(string s) {
    vector<int> answer;
    vector<pair<int,int>> v(100001);
    string num = "";
    for(int i=0;i<s.size();i++){
        if(s[i] < '0' || s[i] > '9'){
            if(num == "")
                continue;
            else{
                int n = stoi(num);
                num = "";
                v[n].first--;
                v[n].second = n;
            }
        }else{
            num += s[i];
        }
    }
    
    sort(v.begin(), v.end());
    for(int i=0;i<v.size();i++){
        if(v[i].first == 0)
            break;
        answer.push_back(v[i].second);
    }
    
    return answer;
}

출처 : https://programmers.co.kr/learn/courses/30/lessons/64065

profile
김민석의 학습 정리 블로그

0개의 댓글