알고리즘 풀이/프로그래머스
[level2] 프로그래머스 - 더 맵게(JAVA)
데롱디롱
2021. 9. 18. 22:35
728x90
모든 스코빌 지수가 처음부터 K보다 클 땐
0을 리턴해야 될 것 같은데,
이 처리를 안 해도 통과됐당.. ㄷㄷ
[ 풀이 방법 ]
- 우선순위 큐를 사용해서, queue를 스코빌 지수 순으로 가지고 있는다.
- 스코빌 지수를 섞을 수 있는 경우 : queue.size >= 2 계산을 한다.
- 모든 지수가 K이상이면, answer을 리턴한다.
- while문 종료 될 때까지 리턴할 수 없다면 만들 수 없으므로 -1을 리턴한다.
[ 전체 코드 ]
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
PriorityQueue<Integer> queue = new PriorityQueue<Integer>();
for (int n : scoville)
queue.offer(n);
int answer = 0;
while (queue.size() >= 2) {
int a = queue.poll();
int b = queue.poll();
queue.offer(a + b * 2);
answer++;
if (queue.peek() >= K)
return answer;
}
return -1;
}
}