수식에 먼저 주목을 하자면, 가장 덜매운 음식 + 2번째로 덜매운 음식*2 이다. 항상 우선순위가 높은 데이터를 먼저 추출하는 우선순위 큐의 특성 때문에 우선순위 큐를 활용했다.
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>();
for (int i = 0; i < scoville.length; i++) {// 큐에 삽입
pq.offer(scoville[i]);
}
while (!pq.isEmpty()) {
if (pq.size() == 1) { // 큐에 숫자 하나만 있을 때
if (pq.poll() < K) {
answer = -1;
break;
} else {
answer += 1;
break;
}
}
pq.offer(pq.poll() + pq.poll() * 2); // 수식
answer++;
if (pq.peek() > K) { // 제일 작은 수 확인
break;
}
}
return answer;
}
}