Algorithm/프로그래머스
[프로그래머스] 더 맵게 (자바) / 힙
미스터로즈
2021. 9. 16. 09:33
문제

입력&출력 예

문제풀이
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문에서 종료 조건을 잘 설정 해줘야 합니다. 오름차순이므로 첫 값이 스코빌 지수 보다 작은 경우는 계속 돌려주면 됩니다.
만약 다 더해도 스코빌 지수를 넘지 못하는 경우 또한 고려를 해서 작성하면 됩니다.