from collections import deque
def solution(bridge_length, weight, truck_weights):
    answer = 0
    ing = deque() #다리 위의 트럭
    after = [] #다리를 건넌 트럭
    truck_weights = deque(truck_weights)
    count = 0
    
    while True:
    	#다리 길이만큼 트럭이 다리 위에 머물렀을 때(즉 다 지나갔을 때)
        if count == bridge_length:
        	#다리를 다 건넘
            after.append(ing.popleft())
            #카운트 초기화
            count = 0
            
        #대기 트럭이 존재할 때
        if truck_weights:
        	#다리 위에 올라갈 조건을 충족할 때
            if truck_weights[0] + sum(ing) <= weight and len(ing) < bridge_length:
            	#다리 위에 트럭 올리고, 대기 트럭 삭제
                ing.append(truck_weights.popleft())
                #시간 증가하고, 카운트도 증가
                answer += 1
                count += 1
                
            #다리 위에 못 올라갈 때
            else:
                answer += 1
                count += 1
         
        #대기트럭도 다리 위의 트럭도 없을 때       
        elif not ing:
            answer += 1
            break
            
        #대기트럭은 없지만 다리 위의 트럭은 있을 때
        else:
            answer += 1
            count += 1
        
    return answer
def solution(bridge_length, weight, truck_weights):
    answer = 0
    bridge = [0] * bridge_length #다리 길이 정의
    
    while bridge:
        bridge.pop(0) #다리 위에서 한 칸씩 이동
        answer += 1 #시간 증가
        
        if truck_weights: #대기 차가 있을 때
        	#다리 위에 올라갈 수 있는 무게일 때
            if truck_weights[0] + sum(bridge) <= weight:
            	#다리 위에 차 올라감
                bridge.append(truck_weights.pop(0))
        
            else:
            	#다리 위에 아무것도 안 올라감(= 0)
                bridge.append(0)
            
    return answer
def solution(bridge_length, weight, truck_weights):
    answer = 0
    bridge = [0] * bridge_length
    total_weight = 0
    
    while bridge:
        total_weight -= bridge.pop(0)
        answer += 1
        
        if truck_weights:
            if total_weight + truck_weights[0] <= weight:
                total_weight += truck_weights[0]
                bridge.append(truck_weights.pop(0))
        
            else:
                bridge.append(0)
            
    return answer
: total_weight가 핵심!!
매번 다리 위에서 한칸 전진하고, 전진한 만큼 총 무게에서 빼준다.
그리고 대기 차에서 다리 위에 차를 추가할 때, 총 무게를 재조정!