[프로그래머스] 더 맵게

ninano05·2026년 3월 10일
import java.util.*;
import java.io.*;

class Solution {
    public int solution(int[] scoville, int K) {

        // 스코빌 정렬 => 최소 힙으로 형태 변환
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();
        for(int i=0; i<scoville.length; i++) {
            minHeap.add(scoville[i]);
        }
        int mixFood = 0;
        int answer = 0; 

        // 아래 과정을 반복해서 최소값이 K보다 크거나 같으면 종료
            // 최소값 꺼내고, 두번째 최솟값 꺼내고
            // 다시 스코빌 정렬에 넣기
            // 예외 케이스1 = 요소가 하나가 됐을 경우 k 보다 작은 경우

        while(minHeap.peek() < K) {
            if(minHeap.size() == 1) {
                answer = -1;
                break;
            }
            mixFood = minHeap.poll()+(minHeap.poll()*2);
            minHeap.add(mixFood);
            answer ++;
            }

        return answer;
    }
}

<self 주의 사항>

  • heap.poll()로 꺼낼때 요소 남아 있는지 빈 heap 아닌지 점검
  • 더하기 연산 시에 범위 잘 보고 int / long 설정
  • 요소 개수 구하기
    - 배열: .length
    - 문자열: .length()
    - 객체: .size()
profile
초보 개발자

0개의 댓글