탐색 불가능
kind(map)
에 귤 종류, 개수 저장 !value
값으로 오름차순 정렬귤 개수 - k
만큼 귤을 하나씩 빼기Source Code
#include <string> #include <map> #include <algorithm> #include <iostream> 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) { int answer = 0; map <int, int> kind; for(int i=0; i<tangerine.size(); i++) { if(kind.find(tangerine[i]) == kind.end()) { kind.insert(make_pair(tangerine[i], 1)); } else { kind[tangerine[i]]++; } } vector<pair<int, int>> result(kind.begin(), kind.end()); sort(result.begin(), result.end(), compare); int cnt = tangerine.size() - k; answer = result.size(); for(int i=0; i<result.size(); i++) { while(cnt > 0 && result[i].second > 0) { result[i].second--; cnt--; } if(result[i].second == 0) { answer--; } if(cnt == 0) break; } return answer; }
kind에 있는 값들을 vector로 복사
→ vector<pair<int, int>> result(kind.begin(), kind.end());
두번째 인자로 정렬
→ sort(result.begin(), result.end(), compare);
compare 함수
bool compare(pair<int, int> a, pair<int, int> b) { return a.second < b.second; }