Algorithm

[알고리즘] 프로그래머스 - 더 맵게(힙)

byeongoo 2020. 8. 18. 00:46

1. 문제

2. 문제 풀이

스코빌지수가 가장 낮은 2개의 음식을 뽑아서 새로운 음식을 만들어서 우선순위 큐에 계속 넣어주고, 가장 스코빌지수가 낮음 음식이 주어진 K와 같거나 커지면 몇번만에 K 이상으로 만들었는지 반환해주는 간단한 문제였다. 코드를 보면 크게 설명할게 없다는 것을 알 수 있다.

import java.util.*;

class Solution {
    
    PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
    int answer = 0;
    
    public int solution(int[] scoville, int K) {
        
        for(int i=0;i<scoville.length;i++){
            priorityQueue.add(scoville[i]);
        }
        
        while(true){
            answer++;
            
            int size = priorityQueue.size();
            if(size == 1){
                answer = -1;
                break;
            }
            
            int x = priorityQueue.poll();
            int y = priorityQueue.poll();

            int mixScoville = x + y*2;
            priorityQueue.add(mixScoville);
            
            int frontScoville = priorityQueue.peek();
            if(K <= frontScoville){
                break;
            }
        }
        
        return answer;
    }
}