알고리즘 & 자료구조/힙
[프로그래머스 알고리즘 고득점 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;
}
}
