Algorithm/Programmers
[프로그래머스] 더 맵게
wavid
2020. 11. 24. 22:12
programmers.co.kr/learn/courses/30/parts/12117
1. 문제
2. 풀이
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = -1;
PriorityQueue<Integer> queue = new PriorityQueue<>();
for (int i = 0; i < scoville.length; i++) {
queue.add(scoville[i]);
}
int count = 0;
while (queue.size() > 1) {
count++;
int first = queue.poll();
int second = queue.poll();
queue.add(first + (second * 2));
int minVal = queue.peek();
if (minVal >= K) {
answer = count;
break;
}
}
return answer;
}
}
우선순위큐를 이용해서 해결.
큐에 입력값을 모두 넣어두고, queue에 1개 이하로 남아있을 때까지 count++해주고 큐에서 매번 2개씩 poll하면서 , first + (second * 2) 한 것을 다시 큐에 넣어주고, 큐에서 peek을 했을 때 그 값이 K보다 크가나 같은 경우 그 count를 result로 반환해줌.