알고리즘 풀이/프로그래머스

프로그래머스 - 라면공장

100win10 2019. 12. 1. 02:51

문제 : https://programmers.co.kr/learn/courses/30/lessons/42629

 

코딩테스트 연습 - 라면공장 | 프로그래머스

라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니다. 해외 공장에서는 향후 밀가루를 공급할 수 있는 날짜와 수량을 알려주었고, 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받고 싶습니다. 현재 공장에 남아있는 밀가루 수량 stock, 밀가루 공급 일정(dates)과 해당 시점에 공급 가능한 밀가루 수량

programmers.co.kr

 

풀이 :

해당 날이 되면 밀가루를 pq에 추가해주어서 쓸 수 있도록 해주었다. 밀가루가 다 떨어지게 되면

 

가장 효율이 좋은 밀가루를 골라서 쓰게 된다.

 

코드(C++)

#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;
priority_queue<int> pq;
int idx = 0;
for (int day = 0; ; day++)
{
if (day == k)
break;
if (idx < dates.size() && dates[idx] == day)
{
pq.push({ supplies[idx] });
idx++;
}
if (stock == 0 && !pq.empty())
{
stock += pq.top();
pq.pop();
answer++;
}
stock--;
}
return answer;
}
view raw .cpp hosted with ❤ by GitHub