728x90
🔗 문제 링크
📂 분류
Heap
자료구조
💡 풀이
전형적인 우선순위 큐를 활용해서 푸는 문제다.
주어진 스코빌 지수들 중에서 가장 작은 스코빌과 두 번째로 작은 스코빌을 뽑아 K 이상일 때까지 수행해야 하기 때문에 최소 힙을 이용해서 풀면 된다.
📌 주의할 점
pq의 원소 두 개를 뽑기 때문에 로직을 수행할 때 pq.size()
는 2보다 커야 한다.
💻 코드
#include <bits/stdc++.h>
using namespace std;
int solution(vector<int> scoville, int K) {
int answer = 0;
priority_queue<int, vector<int>, greater<int>> pq;
for (int n : scoville) {
pq.push(n);
}
while (pq.size() >= 2 && pq.top() < K) {
int food = pq.top();
pq.pop();
pq.push(food + (pq.top() * 2));
pq.pop();
answer += 1;
}
if (pq.top() < K)
answer = -1;
return answer;
}
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
[c++] 프로그래머스 - 빛의 경로 사이클 (Level 2) (0) | 2022.02.10 |
---|---|
[c++] 프로그래머스 - 신고 결과 받기 (2022 KAKAO BLIND RECRUITMENT) (0) | 2022.02.09 |
[자바] 프로그래머스 - H-Index (Level 2) (0) | 2022.02.09 |
[자바] 프로그래머스 - 위장 (Level 2) (0) | 2022.02.08 |
[자바] 프로그래머스 - 다리를 지나는 트럭 (0) | 2022.02.07 |