나의 풀이
import java.util.PriorityQueue;
public class Solution {
public static int solution(int[] scoville, int K) {
int cnt = 0;
PriorityQueue<Integer> heap = new PriorityQueue<>();
for (int x : scoville) {
heap.add(x);
}
if (heap.peek() >= K) {
return cnt;
}
while (heap.size() > 1) {
int min1 = heap.poll();
int min2 = heap.poll();
int newScoville = min1 + (min2 * 2);
heap.add(newScoville);
cnt++;
if (heap.peek() >= K) {
return cnt;
}
}
return -1;
}
}
▶ poll() 메서드는 우선순위 큐에서 가장 작은 원소(값)를 꺼내어 반환합니다.
동시에, 이 원소는 우선순위 큐에서 제거됩니다.
즉, poll()을 여러 번 호출할 경우, 우선순위 큐에서 순서대로 가장 작은 원소부터 꺼내어집니다.
우선순위 큐가 비어 있을 경우, poll() 메서드는 null을 반환합니다.
▶ peek() 메서드는 우선순위 큐에서 가장 작은 원소(값)를 조회합니다.
그러나, 이 원소는 우선순위 큐에서 제거되지 않습니다.
즉, peek()을 여러 번 호출할 경우, 우선순위 큐에서 가장 작은 원소가
여전히 가장 작은 원소임을 알 수 있습니다.
우선순위 큐가 비어 있을 경우, peek() 메서드는 null을 반환합니다.
'프로그래머스(자바) > LV.2(자바)' 카테고리의 다른 글
주차 요금 계산 → 사람이 풀 수 있는 것인가? (0) | 2023.01.03 |
---|---|
H-index → "자바" (0) | 2023.01.03 |
귤 고르기 → getOrDefault()★★ + 요소 개수 세기 + 내림차순★ (0) | 2023.01.02 |
k진수에서 소수 개수 구하기→10진수를 n진법의 문자열+StringBuilder()+소수판별(제곱근, long타입) (0) | 2023.01.02 |
전화번호 목록→ String문자열의 정렬 sort()의 개념★★ (0) | 2023.01.02 |