본문 바로가기
Algorithm

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

by byeongoo 2020. 8. 18.

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;
    }
}