더 맵게
오답 풀이
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>();
int N = scoville.length;
for(int i = 0; i < N; i++){
pq.offer(scoville[i]);
}
while(pq.size() >= 2){
answer++;
int sum = 0;
int a = pq.poll();
int b = pq.poll();
sum = a + 2*b;
pq.offer(sum);
if(pq.peek() >= K){
return answer;
}
}
if(pq.peek() >= K){
return answer;
}else{
return -1;
}
}
}
- 이렇게 풀면 처음부터 전부가 K 이상일 경우를 정확하게 잡아내지 못함!
- 무조건 섞고 판단하게 된다!
📌 처음에 섞지 않고도 만족하는 경우를 고려하지 못했다!
재풀이
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>();
for (int scov : scoville) {
pq.offer(scov);
}
while (pq.size() > 1 && pq.peek() < K) {
int a = pq.poll();
int b = pq.poll();
int newScoville = a + 2 * b;
pq.offer(newScoville);
answer++;
}
if (pq.peek() < K) {
return -1;
} else {
return answer;
}
}
}