[2023년 11월 23일]다리를 지나는 트럭(12분)

myeongrangcoding·2023년 11월 23일

프로그래머스

목록 보기
49/65

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

구현 아이디어 7분 구현 6분

풀이

#include <string>
#include <vector>
#include <queue>

// bridge_length == queue의 사이즈.
// push와 pop이 같이 일어날 수 있음. (다리에 완전히 오르지 않은 트럭의 무게 무시)

using namespace std;

int solution(int bridge_length, int weight, vector<int> truck_weights) {
    int answer = 0;
    
    queue<int> bridge;
    for(int i = 0; i < bridge_length; ++i) bridge.push(0);
    
    int sum = 0;
    int time = 0;
    for(int i = 0; i < truck_weights.size();)
    {
        // 하나 빠지고.
        sum -= bridge.front();
        bridge.pop();
        
        int cur_truck_weight = truck_weights[i];
        if(sum + cur_truck_weight <= weight && bridge.size() <= bridge_length)
        {
            bridge.push(cur_truck_weight);
            sum += cur_truck_weight;
            ++i;
        }
        else bridge.push(0);
        
        ++time;
    }
    
    time += bridge.size();
    
    return answer = time;
}
profile
명랑코딩!

0개의 댓글