https://school.programmers.co.kr/learn/courses/30/lessons/42626
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int i : scoville){
pq.add(i);
}
int min = pq.peek();
while(min < K){
if(pq.size() >= 2){
pq.add(pq.poll() + (pq.poll()*2));
min = pq.peek();
answer++;
}else{
return -1;
}
}
return answer;
}
}
/*
1. 항상 숫자가 정렬되어있는 우선순위큐 사용(PriorityQueue)
2. 가장 작은 수가 K보다 작고 2개 이상 남았다면 섞음
3. 뭘해도 K이상 안된다면 -1 반환
*/
'코딩테스트 > 코딩테스트 문제풀이' 카테고리의 다른 글
| [Java] 프로그래머스 <프로세스> (0) | 2025.03.07 |
|---|---|
| [Java] 프로그래머스 <기능 개발> (0) | 2025.03.07 |
| [Java] 프로그래머스 <시저 암호> (0) | 2025.03.06 |
| [Java] 프로그래머스 <삼총사> (0) | 2025.03.06 |
| [Java] 프로그래머스 <최대공약수와 최소공배수> (0) | 2025.03.03 |