<문제>
<접근 방식>
1) 작은수부터 계속해서 조회해서 값을 추가 비교 하기 때문에 해당 문제에 효율적인 자료구조 PriorityQueue를 사용.
2) peek()한 갑이 K보다 클때까지 무한 반복하되 PriorityQueue의 사이즈가 1개라면 더 이상 섞을 수 없으니 -1 반환.
3) PriorityQueue에서 2개의 값을 꺼내어 제시한 연산 진행후 add() 및 섞은 횟수 +1.
<코드>
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
for(int i = 0; i < scoville.length; ++i){
priorityQueue.add(scoville[i]);
}
while(priorityQueue.peek() < K){
if(priorityQueue.size() < 2){
return -1;
}
int first = priorityQueue.poll();
int second = priorityQueue.poll();
priorityQueue.add(first + (second * 2));
++answer;
}
return answer;
}
}
반응형
'코딩 테스트 > 알고리즘(Java)' 카테고리의 다른 글
[프로그래머스/Lv.2] 타겟 넘버 (0) | 2025.02.13 |
---|---|
[프로그래머스/Lv.2] 프로세스 (1) | 2025.02.13 |
[프로그래머스/Lv.1] 두 개 뽑아서 더하기 (0) | 2025.02.04 |
[프로그래머스/Lv.2] 카펫 (0) | 2025.02.04 |
[프로그래머스/Lv.1] 가장 가까운 같은 글자 (0) | 2025.01.24 |