알고리즘
프로그래머스 더 맵게 (JAVA)
박카스마시며코딩
2021. 12. 24. 22:16
https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
저는 힙을 통해서 가장 낮은 값을 가져왔습니다. 그리고 이 값이 k보다 작다면 힙에서 하나 더 꺼내어 이를 공식에 대입하고 힙에 다시 넣었습니다.
마지막으로 -1이 되는 조건인 값이 k보다 작고 힙에 다른 값이 없을 때 입니다.
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> p = new PriorityQueue<>();
for(int num : scoville){
p.offer(num);
}
while(true){
int num = p.peek();
if(num >= K){
break;
}else{
answer++;
if(p.size() <= 1){
answer = -1;
break;
}
int num1 = p.poll();
int num2 = p.poll();
p.offer(num1 + 2*num2);
}
}
return answer;
}
}