알고리즘 & 자료구조/힙

[프로그래머스 알고리즘 고득점 Kit][힙(Heap)][Java] 더 맵게

수수다 2026. 3. 29. 01:07

https://school.programmers.co.kr/learn/courses/30/parts/12117

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. 정답 코드

작은 것부터 활용해야하기 때문에
우선순위큐를 활용했음

처음에 틀렸을 땐 2개씩 꺼내야하는데
!pq.isEmpty() 로 종료조건을 걸어서 틀림

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        PriorityQueue<Long> pq = new PriorityQueue<>((s1, s2) -> {
            return Long.compare(s1, s2);
        });
        for(long s : scoville) {
            pq.add(s);
        }
        int count = 0;
        while(pq.size() >= 2){
            long first = pq.poll();
            if(first >= K) break;
             
            long second = pq.poll();
            long mix = first + second*2;
            pq.add(mix);
            count++;
        }
        
        return pq.poll() < K ? -1 : count;
    }
}