[프로그래머스 코딩테스트] 힙(Heap) - 더 맵게

EUN JY·2022년 2월 9일
2

Coding Test

목록 보기
3/9
post-thumbnail

우선순위 큐를 이용해 Heap 구조를 만들 수 있다고 하여... PriorityQueue를 사용했다.
배열이나 연결 리스트를 이용하지 않고 PriorityQueue를 사용하는 이유 > https://chanhuiseok.github.io/posts/ds-4/

우선순위 큐에 담아 스코빌 지수가 가장 낮은 두 개를 추출해 계산 후 다시 add 하는 방법으로 풀었다.

queue.peek()은 확인만, queue.poll()은 추출까지 하는 함수.

import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        
        PriorityQueue<Integer> queue = new PriorityQueue<>();
        
        for (int sco : scoville) {
            queue.add(sco);
        }
        
        int[] tempSco = {0, 0};
        
        while (queue.peek() < K) {
            if(queue.size() < 2) return -1;
            
            tempSco[0] = queue.poll();
            tempSco[1] = queue.poll();
            
            queue.add(tempSco[0] + (tempSco[1] * 2));    
            answer++;
        }
        
        return answer;
    }
}
profile
개린이

0개의 댓글