우선순위 큐를 이용해 Heap 구조를 만들 수 있다고 하여... PriorityQueue를 사용했다.
배열이나 연결 리스트를 이용하지 않고 PriorityQueue를 사용하는 이유 > https://chanhuiseok.github.io/posts/ds-4/
우선순위 큐에 담아 스코빌 지수가 가장 낮은 두 개를 추출해 계산 후 다시 add 하는 방법으로 풀었다.
queue.peek()
은 확인만, queue.poll()
은 추출까지 하는 함수.
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> queue = new PriorityQueue<>();
for (int sco : scoville) {
queue.add(sco);
}
int[] tempSco = {0, 0};
while (queue.peek() < K) {
if(queue.size() < 2) return -1;
tempSco[0] = queue.poll();
tempSco[1] = queue.poll();
queue.add(tempSco[0] + (tempSco[1] * 2));
answer++;
}
return answer;
}
}