문제
입력&출력 예
문제풀이
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> arr = new PriorityQueue<Integer>();
for(int i = 0 ; i < scoville.length;i++){
arr.add(scoville[i]);
}
while( arr.peek()<K){
if(arr.size()==1){
return -1;
}
answer++;
int a = arr.poll();
int b = arr.poll();
arr.add(a+(b*2));
}
return answer;
}
}
※ 내 생각
이 문제는 PriorityQueue를 이용하면 쉽게 해결할 수 있는 문제입니다.
while문에서 종료 조건을 잘 설정 해줘야 합니다. 오름차순이므로 첫 값이 스코빌 지수 보다 작은 경우는 계속 돌려주면 됩니다.
만약 다 더해도 스코빌 지수를 넘지 못하는 경우 또한 고려를 해서 작성하면 됩니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이중 우선 순위 큐(자바) / 힙 (0) | 2021.10.01 |
---|---|
[프로그래머스] 디스크 컨트롤러(자바) /Heap (0) | 2021.09.27 |
[프로그래머스] 다리를 지나는 트럭(자바) / 큐 (0) | 2021.09.12 |
[프로그래머스] 프린터(자바) / 자료구조 (0) | 2021.09.09 |
[프로그래머스] 베스트 앨범(자바) / Hash (0) | 2021.09.05 |