programmers.co.kr/learn/courses/30/lessons/42626
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
// 전처리 ,입력
PriorityQueue<Integer> pq = new PriorityQueue<>();
int answer = 0;
for ( int i : scoville ){
pq.add(i);
}
// 계산
int a, b;
try{
while (pq.peek() < K ){
a = pq.poll();
b = pq.poll();
pq.add(a + 2 * b);
answer++;
}
} catch(Exception e){
return -1;
}
return answer;
}
}
프로그래머스에서 기본 연습문제로 제공하는 Heap 문제
우선순위 큐를 사용해서 첫번째와 두번째 값을 가져오는데 특정 값 K가 만족 되지 않으면 계속 반복하는데 while(true)를 사용하면 불가능한 경우에도 출력하려다가 NullPointException을 발생시키게 된다. 그 에러 케이스를 이용해서 return -1을 사용하여 문제 해결
'study > algorithm' 카테고리의 다른 글
Java에서 쓰는 equals()와 hashCode() (0) | 2021.04.06 |
---|