-
[프로그래머스] 라면공장 (07.16)algorithm/프로그래머스 2020. 7. 16. 18:19
문제
https://programmers.co.kr/learn/courses/30/lessons/42629
접근법
우선순위 큐라는 것을 사용하였다.
Comparator 메소드를 파라미터로 지정해주면 메소드의 성질에 따라 정렬이 된 상태로 큐에 삽입이 가능하다.
for문을 k(마지막날)까지 돌리면서 stock을 하나씩 빼주었다.
그 과정에서 밀가루가 공급되는 날마다 우선순위 큐에 넣어주고
stock이 0이 될때마다 밀가루 공급량이 내림차순으로 저장된 큐에서 하나씩 꺼내서 밀가루를 보충해주는 방식으로 해결하였다.
코드
import java.util.Comparator; import java.util.PriorityQueue; import java.util.Queue; public class PGMS_라면공장_second { public int solution(int stock, int[] dates, int[] supplies, int k) { int answer = 0; Queue<Integer> pq = new PriorityQueue<>(Comparator.reverseOrder()); int idx = 0; for(int i=0;i<k;i++){ if(idx < dates.length && dates[idx] == i){ pq.offer(supplies[idx]); idx++; } if(stock == 0){ int poll = pq.poll(); stock += poll; answer++; } stock--; } return answer; } }
'algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 종이 접기 (07.23) (0) 2020.07.23 [프로그래머스] 숫자 야구 (07.20) (0) 2020.07.20 [프로그래머스] 여행경로 (07.15) (0) 2020.07.15 [프로그래머스] 단어 변환 (07.13) (0) 2020.07.13 [프로그래머스] H-Index (07.12) (0) 2020.07.12