티스토리 뷰

반응형

프로그래머스 알고리즘 - 더 맵게

프로그래머스 '더 맵게' 문제링크

음식 중에 가장 덜 매운 2가지의 음식을 반복적으로 선택해야 합니다. 우선순위 큐(Priority Queue)를 사용하면 가장 덜 매운 2가지 음식을 찾기 편합니다. 우선순위 큐에 대한 내용은 이전 포스팅에 있습니다. ☞ 우선순위 큐 - Java에서 다루기

풀이코드 (java)

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();

        //우선순위 큐에 음식 담아주기
        for (int i : scoville) {
            priorityQueue.add(i);
        }

        //가장 덜 매운 음식의 스코빌 지수가 K보다 작다면 반복한다.
        while (!priorityQueue.isEmpty() && priorityQueue.peek() < K){
            Integer lessSpicy = priorityQueue.poll();
            if (!priorityQueue.isEmpty()) {
                Integer secondLessSpicy = priorityQueue.poll();
                //가장 덜 매운 음식 2가지를 섞고, 다시 큐에 넣는다.
                priorityQueue.add(lessSpicy + secondLessSpicy * 2);
                answer++;
            } else {
                return -1;
            }
        }
        return answer;
    }
}


반응형
댓글