알고리즘

프로그래머스 더 맵게 (JAVA)

박카스마시며코딩 2021. 12. 24. 22:16

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

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

 

저는 힙을 통해서 가장 낮은 값을 가져왔습니다. 그리고 이 값이 k보다 작다면 힙에서 하나 더 꺼내어 이를 공식에 대입하고 힙에 다시 넣었습니다.

마지막으로 -1이 되는 조건인 값이 k보다 작고 힙에 다른 값이 없을 때 입니다.

 

import java.util.*;
class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> p = new PriorityQueue<>();
        for(int num : scoville){
            p.offer(num);
        }
        while(true){
            int num = p.peek();
            if(num >= K){
                break;
            }else{
                answer++;
                if(p.size() <= 1){
                    answer = -1;
                    break;
                }
                int num1 = p.poll();
                int num2 = p.poll();
                p.offer(num1 + 2*num2);
            }
        }
        return answer;
    }
}