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

수경·2023년 3월 16일
0

problem solving

목록 보기
124/174

프로그래머스 - 더 맵게

풀이

  1. 리스트에 있는 숫자 중 가장 작은 숫자를 꺼내서 새로운 스코빌 지수로 계산해서 다시 저장, 반복
    -> 매번 정렬하면 효율 x
    -> 우선순위 큐에 저장
    -> 반복한 횟수 result 저장

  2. 큐의 가장 작은 숫자가 k이상이면 result, 큐가 비어있으면 -1 반환


코드

import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        int result = 0;
		PriorityQueue<Integer> minHeap = new PriorityQueue<>();
		
		for (int sco : scoville) minHeap.add(sco);

		while (!minHeap.isEmpty() && minHeap.peek() <= K) {
			int food = minHeap.poll();
			if (food < K && !minHeap.isEmpty()) {
				food += minHeap.poll() * 2;
				minHeap.add(food);
				result++;
			}
		}
		return minHeap.isEmpty() ? -1 : result;
    }
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글