본문으로 바로가기
from collections import deque


def solution(bridge_length, weight, truck_weights):
    truck_weights = deque(truck_weights)
    bridge = deque([0 for _ in range(bridge_length)])
    t = 0
    bridge_weight = 0

    while len(bridge) != 0:
        pass_truck = bridge.popleft()
        bridge_weight -= pass_truck
        t += 1
        if truck_weights:
            if bridge_weight + truck_weights <= weight:
                left = truck_weights.popleft()
                bridge_weight += left
                bridge.append(left)
            else:
                bridge.append(0)

    return t

 

스택/큐를 이용한 문제.

시뮬레이션도 섞여있는 느낌인데 지나간 트럭, 다리 위 트럭, 아직 안지나간 트럭을 잘 구분하는 로직이 중요하다.

나중에 다시 풀어볼 가치가 있음.