[programmers] 더 맵게

KwonSC·2022년 4월 5일
0

programmers - Java

목록 보기
9/17
post-thumbnail

https://programmers.co.kr/learn/courses/30/lessons/42626


Code

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        PriorityQueue<Integer> q = new PriorityQueue<>();
        for (int item : scoville) {
            q.offer(item);
        }
        int answer = 0;
        while (q.peek() < K && q.size() > 1) {
            int item1 = q.poll();
            int item2 = q.poll();
            q.offer(item1 + (item2 * 2));
            answer++;
        }
        if (q.peek() < K) {
            return -1;
        }
        return answer;
    }
}

Solution

맵기를 조절할때 항상 가장 낮은 값이 맨 앞에 있어야하기때문에 우선순위큐를 선언해 사용, while문을 돌때 큐의 맨 앞의 값이 K보다 작고 큐의 사이즈가 2 이상일때만 스코빌 지수를 합치는 작업을 반복, 마지막에 큐의 맨 앞의 값이 K보다 작으면 -1을 리턴하고 아니면 answer를 리턴

0개의 댓글