알고리즘/프로그래머스

프로그래머스 - 라면공장

시나모온 2020. 7. 25. 12:54

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/42629

 

코딩테스트 연습 - 라면공장

라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니��

programmers.co.kr

 

 

 

 

#include <string>
#include <vector>
#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 len = dates.size();
    int index = 0;
    
    // 0일부터 ~ K-1일까지 다 시도해본다.
    for(int i = 0; i < k; i++) {
        
        // dates에 있는 날짜랑 시도 날짜랑 같으면 pq에 push
        if(index != len && i == dates[index]) {
            pq.push(supplies[index++]);
        }
        
        // stock이 0이 되는 날에는 저장된거 하나 빼서 더한다.
        if(stock == 0) {
            stock += pq.top();
            pq.pop();
            answer++;
        }
        
        // 하루 지났으니 stock에서 하나 뺀다.
        stock--;
        
    }
    return answer;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~