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;
}
}
