import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> arr = new PriorityQueue<Integer>();
for(int i = 0 ; i < scoville.length;i++){
arr.add(scoville[i]);
}
while( arr.peek()<K){
if(arr.size()==1){
return -1;
}
answer++;
int a = arr.poll();
int b = arr.poll();
arr.add(a+(b*2));
}
return answer;
}
}
※ 내 생각
이 문제는 PriorityQueue를 이용하면 쉽게 해결할 수 있는 문제입니다.
while문에서 종료 조건을 잘 설정 해줘야 합니다. 오름차순이므로 첫 값이 스코빌 지수 보다 작은 경우는 계속 돌려주면 됩니다.