알고리즘 풀이/프로그래머스

[level2] 프로그래머스 - 더 맵게(JAVA)

데롱디롱 2021. 9. 18. 22:35
728x90

 

 

 

 

모든 스코빌 지수가 처음부터 K보다 클 땐
0을 리턴해야 될 것 같은데,
이 처리를 안 해도 통과됐당.. ㄷㄷ

 

 

 

 

[ 풀이 방법 ]

- 우선순위 큐를 사용해서, queue를 스코빌 지수 순으로 가지고 있는다.

- 스코빌 지수를 섞을 수 있는 경우 : queue.size >= 2 계산을 한다.

- 모든 지수가 K이상이면, answer을 리턴한다.

- while문 종료 될 때까지 리턴할 수 없다면 만들 수 없으므로 -1을 리턴한다.

 

 

 

 

[ 전체 코드 ]

import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        PriorityQueue<Integer> queue = new PriorityQueue<Integer>();
        for (int n : scoville)
            queue.offer(n);

        int answer = 0;
        while (queue.size() >= 2) {
            int a = queue.poll();
            int b = queue.poll();
            queue.offer(a + b * 2);
            answer++;

            if (queue.peek() >= K)
                return answer;
        }

        return -1;
    }
}