https://programmers.co.kr/learn/courses/30/lessons/42626
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
PriorityQueue<Integer> q = new PriorityQueue<>();
for (int item : scoville) {
q.offer(item);
}
int answer = 0;
while (q.peek() < K && q.size() > 1) {
int item1 = q.poll();
int item2 = q.poll();
q.offer(item1 + (item2 * 2));
answer++;
}
if (q.peek() < K) {
return -1;
}
return answer;
}
}
맵기를 조절할때 항상 가장 낮은 값이 맨 앞에 있어야하기때문에 우선순위큐
를 선언해 사용, while
문을 돌때 큐의 맨 앞의 값이 K
보다 작고 큐의 사이즈가 2 이상일때만 스코빌 지수를 합치는 작업을 반복, 마지막에 큐의 맨 앞의 값이 K
보다 작으면 -1
을 리턴하고 아니면 answer
를 리턴