Preparing Coding Test/Programmers L2
[Java/프로그래머스/힙(Heap)] 더 맵게
weero
2020. 10. 16. 16:26
문제
programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같��
programmers.co.kr
코드
모든 원소가 K보다 커야 한다고 해서 for문으로 검사를 했었는데,
생각해보니 우선순위 큐라서 제일 앞의 원소만 K보다 큰지 확인해주면 됐었다.
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
//int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
for(int food : scoville){
pq.add(food);
}
int cnt=0;
int tmpK = pq.peek();
while(true){
boolean overK = true;
if(pq.peek() >= K)
return cnt;
else{
if(pq.size()==1)
return -1;
tmpK = pq.poll() + pq.poll()*2;
pq.add(tmpK);
cnt++;
}
}
}
}