[프로그래머스]귤 고르기

less than 1 minute read

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/138476


풀이

5분
map 자료구조를 이용해 크기별로 카운트 해서, 최소한의 종류 개수를 찾는다.

코드

#include <string>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

bool compare(pair<int,int> a ,pair<int,int> b){
    return a.second > b.second;
}

int solution(int k, vector<int> tangerine) {
    map<int,int> m;
    for(int i : tangerine){
        m[i] += 1;
    }
    vector<pair<int,int>> v(m.begin(),m.end());
    sort(v.begin(), v.end(), compare);
    for(int i = 0; i < v.size(); ++i){
        k -= v[i].second;
        if(k <= 0){
            return i + 1;
        }
    }
    return -1;
}