Algorithm/Programmers

[프로그래머스] 더 맵게

wavid 2020. 11. 24. 22:12

programmers.co.kr/learn/courses/30/parts/12117

1. 문제

2. 풀이

import java.util.*;
class Solution {
    public int solution(int[] scoville, int K) {
	int answer = -1;
        PriorityQueue<Integer> queue = new PriorityQueue<>();
        for (int i = 0; i < scoville.length; i++) {
            queue.add(scoville[i]);
        }
        int count = 0;
        while (queue.size() > 1) {
            count++;
            int first = queue.poll();
            int second = queue.poll();
            queue.add(first + (second * 2));
            int minVal = queue.peek();
            if (minVal >= K) {
                answer = count;
                break;
            }
        }
        return answer;
    }
}

우선순위큐를 이용해서 해결.

큐에 입력값을 모두 넣어두고, queue에 1개 이하로 남아있을 때까지 count++해주고 큐에서 매번 2개씩 poll하면서 , first + (second * 2) 한 것을 다시 큐에 넣어주고, 큐에서 peek을 했을 때 그 값이 K보다 크가나 같은 경우 그 count를 result로 반환해줌.