문제
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
해시 기반으로 크기에 대한 갯수를 받음.
갯수를 기반으로 정렬하기 위해 priority_queue를 사용
-> 자동적으로 갯수가 많은 것부터 정렬됨.
#include <bits/stdc++.h>
using namespace std;
/*
k : 귤의 갯수
종류를 최소화하여 귤을 판매
1) 해시
2) pq를 사용해 갯수가 많은 순으로 정렬
*/
int solution(int k, vector<int> tangerine) {
int answer = 0;
unordered_map<int,int> cnt; // (크기 -> 개수)
for (int x : tangerine) cnt[x]++;
priority_queue<pair<int,int>> pq; // top: count 가장 큰 것
for (auto &p : cnt) pq.push({p.second, p.first}); // (갯수, 크기) 순으로 추가 -> 자동으로 크기가 큰 것 부터 정렬됨.
while (!pq.empty())
{
// cout << pq.top().first << " " << pq.top().second << "\n";
k-= pq.top().first;
pq.pop();
answer++;
if(k<=0)
break;
}
return answer;
}
'코딩 테스트 > C++' 카테고리의 다른 글
| 프로그래머스, C++) Lv 2. 영어 끝말잇기 (0) | 2025.10.22 |
|---|---|
| 프로그래머스, C++) Lv 2. 멀리뛰기 (0) | 2025.10.22 |
| 프로그래머스, C++) Lv 2. 구명 보트 (0) | 2025.10.19 |
| 프로그래머스, C++) Lv 2. 짝지어 제거하기 (0) | 2025.10.17 |
| 백준, C++) 2587, 25305, 2751, 10989, 1427, 11650, 11651, 1181 (0) | 2025.10.10 |