[프로그래머스] 더 맵게(java)

박현우·2020년 7월 30일
0

프로그래머스

목록 보기
10/34

문제

더 맵게

문제 풀이

수식에 먼저 주목을 하자면, 가장 덜매운 음식 + 2번째로 덜매운 음식*2 이다. 항상 우선순위가 높은 데이터를 먼저 추출하는 우선순위 큐의 특성 때문에 우선순위 큐를 활용했다.

프로그램 코드

import java.util.*;
class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<>();

		for (int i = 0; i < scoville.length; i++) {// 큐에 삽입
			pq.offer(scoville[i]);
		}

		while (!pq.isEmpty()) {
			if (pq.size() == 1) { // 큐에 숫자 하나만 있을 때
				if (pq.poll() < K) {
					answer = -1;
					break;
				} else {
					answer += 1;
					break;
				}
			}
			pq.offer(pq.poll() + pq.poll() * 2); // 수식
			answer++;
			if (pq.peek() > K) { // 제일 작은 수 확인
				break;
			}
		}
        return answer;
    }
}

0개의 댓글