티스토리 뷰

문제 : programmers.co.kr/learn/courses/30/lessons/42626

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr

주어진 scoville array를 priority queue에 넣기만 하면 쉽게 해결되는 문제

 

소스코드

import java.util.PriorityQueue;

class Solution {
    private int count = 0;

    public int solution(int[] scoville, int K) {
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        for (int factor : scoville) {
            pq.offer(factor);
        }

        while (pq.size() > 1) {
            int smallest = pq.poll();
            if (smallest >= K) {
                return this.count;
            }
            int nextSmallest = pq.poll();
            pq.offer(blend(smallest, nextSmallest));
        }

        return pq.poll() >= K ? this.count : -1;
    }

    private int blend(int a, int b) {
        this.count++;
        return a + 2 * b;
    }
}

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함