GitHubSeob
C++ / 프로그래머스 / 귤 고르기 본문
문제 |
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이 |
우선순위 큐를 이용하여 풀었다.
정렬을 한 뒤, 이번 귤과 다음귤이 같지 않으면 cnt값을 우선순위 큐에 push 한다.
그렇게 되면 우선순위 큐에는 크기가 같은 귤들이 몇 개씩 있는지, 개수만 들어간다.
따로 정렬 설정을 안 했으므로 우선순위 큐 top부분에는 가장 큰 숫자가 들어간다.
반복문을 돌려 K가 0 이하가 될 때까지 K - pq.top()을 하여 상자에 귤을 담는다.
귤을 담았으므로 담은 횟수를 증가시킨다.
코드 |
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int solution(int k, vector<int> tangerine) {
int answer(0), idx(0), cnt(0);
priority_queue<int>pq;
sort(tangerine.begin(), tangerine.end());
tangerine.push_back(-1);
for (idx = 0; idx < tangerine.size(); ++idx) {
++cnt;
if (tangerine[idx] != tangerine[idx + 1]) {
pq.push(cnt);
cnt = 0;
}
}
while (k > 0) {
k -= pq.top();
pq.pop();
answer++;
}
return answer;
}
'Programmers > Level 2' 카테고리의 다른 글
C++ / 프로그래머스 / n^2 배열 자르기 (0) | 2023.07.11 |
---|---|
C++ / 프로그래머스 / 연속 부분 수열 합의 개수 (0) | 2023.07.11 |
C++ / 프로그래머스 / 멀리 뛰기 (0) | 2023.07.06 |
C++ / 프로그래머스 / N개의 최소공배수 (0) | 2023.07.06 |
C++ / 프로그래머스 / 구명보트 (0) | 2023.07.04 |