홍시홍의 프로그래밍

[프로그래머스] 라면공장 본문

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

[프로그래머스] 라면공장

홍시홍 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;
}
Comments