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;
}
}