본문 바로가기
전공공부/코딩테스트

(c++) 프로그래머스 "다리를 지나는 트럭"

by 시아나 2022. 5. 10.

https://programmers.co.kr/learn/courses/30/lessons/42583

 

코딩테스트 연습 - 다리를 지나는 트럭

트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈

programmers.co.kr


#include <string>
#include <vector>

using namespace std;

int solution(int bridge_length, int weight, vector<int> truck_weights) {
    int answer = 0;
    int i = 0,nowWeight = 0;
    vector<pair<int, int>> v;
    while (i < truck_weights.size() || !v.empty()) {
        if (!v.empty() && v[0].first <= 0) {
            nowWeight -= v[0].second;
            v.erase(v.begin());
        }
        if (i < truck_weights.size() && nowWeight + truck_weights[i] <= weight) {
            nowWeight += truck_weights[i];
            v.push_back({ bridge_length,truck_weights[i++] });
        }
        for (int k = 0; k < v.size(); k++) {
            v[k].first -= 1;
        }
        answer++;
    }
    return answer;
}