본문 바로가기
Preparing Coding Test/Programmers L2

[Java/프로그래머스/힙(Heap)] 더 맵게

by weero 2020. 10. 16.

문제

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

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

 

코드

모든 원소가 K보다 커야 한다고 해서 for문으로 검사를 했었는데,

생각해보니 우선순위 큐라서 제일 앞의 원소만 K보다 큰지 확인해주면 됐었다.

import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        //int answer = 0;
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
        for(int food : scoville){
            pq.add(food);
        }
        
        int cnt=0;
        int tmpK = pq.peek();
        
        while(true){
            boolean overK = true;
            if(pq.peek() >= K)
                return cnt;
            else{        
                if(pq.size()==1)
                    return -1;
                tmpK = pq.poll() + pq.poll()*2;
                pq.add(tmpK);
                cnt++;
            }
        }
    }
}