https://programmers.co.kr/learn/courses/30/lessons/42629
우선순위 큐를 이용하여 구현함
공급 물량을 내림차순으로 하여 저장하게 하였음
또한 재고가 부족한 경우에 poll() 해서 더해주도록 함
왜냐하면 결국엔 stock이 다 쓴경우에 채워서 쓰면 최소로 공급 받는 방법이 되기 때문임
추가로 우선순위 큐로 구현하였기 때문에 중간에 필요없이 공급받아야 하는 경우 또한 제외할 수 있음
import java.util.*;
// 라면공장
// k-1일 까지의 밀가루 수량 확보 필요
class Solution {
public int solution(int stock, int[] dates, int[] supplies, int k) {
int answer = 0;
// 내림 차순
Queue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
int supplyIdx = 0;
// k-1일까지
for(int i = 0 ; i < k ; i++){
// 현재 날짜와 공급 가능일이 같으면 큐에 추가
if(supplyIdx < dates.length && i == dates[supplyIdx]){
pq.offer(supplies[supplyIdx]);
supplyIdx++;
}
stock--;
// stock 이 -1이 되면 큐에서 빼서 stock 추가
if(stock == -1) {
stock += pq.poll();
answer++;
}
}
return answer;
}
}
'Old > Algorithms' 카테고리의 다른 글
[JAVA] 프로그래머스 : 자릿수 더하기 (0) | 2020.07.16 |
---|---|
[JAVA] 프로그래머스 : 이중우선순위큐 (코딩테스트 고득점 kit > 힙(Heap)) (0) | 2020.07.15 |
[JAVA] 프로그래머스 : 더 맵게 (코딩테스트 고득점 kit > 힙(Heap)) (0) | 2020.07.15 |
[JAVA] 프로그래머스 : 베스트앨범 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 기능개발 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |