import java.util.PriorityQueue;
public class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
//배열 값 중에서 첫번째, 두번째 작은 수를 찾아야 하므로
//우선순위 큐 사용
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int num : scoville) {
pq.add(num);
}
while(pq.size()>1 && pq.peek()<K) {
int minimum = pq.poll();
pq.add(minimum + pq.poll()*2);
answer++;
}
if(pq.peek()<K) answer = -1;
return answer;
}
}
'자료구조 & 알고리즘 > 문제풀이' 카테고리의 다른 글
K번째 수 - 프로그래머스 (Java, Level 1) (0) | 2022.02.09 |
---|---|
이중우선순위큐 - 프로그래머스 (Java, Level 3) (0) | 2022.02.09 |
기능 개발 - 프로그래머스 (Java, Level 2) (0) | 2022.02.08 |
위장 - 프로그래머스 (Java, Level 2) (0) | 2022.02.08 |
전화번호 목록 - 프로그래머스 (Java, Level 2) (0) | 2022.02.07 |
댓글