기술없는 기술 블로그 RSS 태그 관리 글쓰기 방명록
Algorithm (1)
2021-04-17 00:02:08

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