Iyoungman Back-end Developer

Programmers. 라면공장


Problem

https://programmers.co.kr/learn/courses/30/lessons/42629


Think

  • 공급받을 수 있을 때 받는것이 아니라
    필요할 때 가장 큰 공급량을 공급받는 것이 중요하다.

  • 우선순위큐 문제들의 특징 중 하나이다.


Solved Code

import java.util.Collections;
import java.util.PriorityQueue;

class Solution {
    public int solution(int stock, int[] dates, int[] supplies, int k) {
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());

        int answer = 0;
        int dateIndex = 0;
        for (int i = 0; i < k; i++) {
            stock--;

            if (dateIndex < dates.length && dates[dateIndex] == i) {
                priorityQueue.offer(supplies[dateIndex]);
                dateIndex++;
            }

            if (stock < 0) {
                stock = stock + priorityQueue.poll();
                answer++;
            }
        }

        return answer;
    }
}

Comments

Content