알고리즘 문제풀이/프로그래머스
[프로그래머스] 라면공장
홍시홍
2020. 3. 30. 20:11
분류 : 힙
요구사항
해외 공장으로부터 물량 공급받는 횟수 최소로 하기
풀이
현재 요일 이전까지의 요일과 물량을 힙에 넣어준다
현재 요일이 지날 경우, 이전까지의 물량 중 제일 큰 물량을 넣어 준다.
그래야지 최소로 k일 수 만큼 버틸 수 있다.
#include <string>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
int solution(int stock, vector<int> dates, vector<int> supplies, int k) {
int answer = 0;
int dist=stock;
priority_queue<int> q;
int past=0;
while(true){
if(dist>=k) break;
for(int i=past ; i<dates.size() ; i++){
if(dist >=dates[i]){
past++;
q.push(supplies[i]);
}
}
int nowmaxsuppies = q.top();
dist+=nowmaxsuppies;
answer++;
if(!q.empty())q.pop();
else break;
}
return answer;
}