Development Logs/Algorithms
[JAVA] 프로그래머스 : 라면공장 (코딩테스트 고득점 kit > 힙(Heap))
유뱅유뱅뱅
2020. 7. 15. 19:23
반응형
https://programmers.co.kr/learn/courses/30/lessons/42629
코딩테스트 연습 - 라면공장
라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니��
programmers.co.kr
우선순위 큐를 이용하여 구현함
공급 물량을 내림차순으로 하여 저장하게 하였음
또한 재고가 부족한 경우에 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;
}
}
반응형