[JAVA/프로그래머스] LV.2 더 맵게

윤소영·2023년 10월 28일
0

JAVA

목록 보기
28/41

문제



문제 답안

import java.util.*;
class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> p = new PriorityQueue<>();
        for(int i : scoville)
            p.add(i);
        
        int n1 = 0;
        int n2 = 0;
        
        while(p.peek() < K){
            if(p.size() >= 2){
                n1 = p.poll();
                n2 = p.poll();
                p.add(n1 + (n2*2)); // 기존의 큐에서 값을 추가 할 때도 자동으로 작은 우선순위대로 정렬
                answer++;
            }
            else{
                if(p.peek() < K)
                    return -1;
                else{
                    break;
                }
            }
        }
        return answer;
    }
}



답안 풀이

우선순위 큐 이용.

  1. 큐에 스코빌 배열 넣기
  2. 큐의 최대 우선순위 노드가 K보다 작을 동안
    2-1. 큐의 사이즈가 2보다 크거나 같으면 스코빌 지수 갱신
    2-2. 큐의 사이즈가 1이거나 0이면 K와 비교해주고 return
  • 고려해야 할 테스트케이스
    [7], 7
    [0, 1], 2
    [0, 1, 2], 2

0개의 댓글