99클럽 코테 스터디 24일차 TIL - priority queue 스코빌 지수

수삼·2024년 11월 21일
0

코딩테스트

목록 보기
30/44

  1. 배열을 우선순위 큐에 넣어준다.
  2. poll을 사용할때마다 최소값을 꺼낼 수 있다. 꺼내서 계산한 값을 바로 넣어준다.
    2-1. 1개만 있는 경우 음식을 섞을 수 없으므로 -1를 반환해준다.
    2-2. 2개 이상인 경우 카운트 해준다.
  3. 최소값이 K값 이상이면 카운트 된 값을 반환해준다.
import java.io.IOException;
import java.lang.*;
import java.util.Arrays;
import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        int rst = 0;
        
        PriorityQueue<Integer> pq = new PriorityQueue();
        Arrays.stream(scoville).forEach(x -> pq.add(x));

        while (!pq.isEmpty() && pq.peek() < K) {
            if(pq.size() == 1)
                return -1;
            pq.add(pq.poll() + (pq.poll() * 2));
            rst++;
        }

        if(pq.peek() >= K) {
            return rst;
        }

        return -1;
    }
}

0개의 댓글