https://www.acmicpc.net/problem/13335

# n은 다리를 건너는 트럭의 수, w는 다리의 길이, 그리고 L은 다리의 최대하중
from collections import deque
n,w,l = map(int, input().split())
trucks = list(map(int, input().split()))
trucks = deque(trucks)
bridge = deque([0] * w)
total_weight = 0
second = 0
while bridge:
second += 1
# 왼쪽에서 다리를 다 통과한 트럭의 무게를 뺴준다
exited_truck = bridge.popleft()
total_weight -= exited_truck
# 대기 중인 트럭이 존재할 때
if trucks:
if total_weight + trucks[0] <= l:
started_truck = trucks.popleft()
total_weight += started_truck
bridge.append(started_truck)
else:
bridge.append(0)
print(second)
일단 bridge 의 길이로 while 문을 돌리는 발상이 어렵다. bridge 길이만큼 0을 초기설정으로 두었다면, 이미 반은 성공한 것.
그 다음에 if trucks 적는 것을 까먹게 된다. 대기 중인 트럭이 없는데 계속 확인을 하게 된다면, 무한루프에 갇혀버릴 것이다.
마지막으로 deque 와 total_weight 를 이용하면 시간 절약에 도움이 된다. 프로그래머스에서는 total_weight 대신 계속 sum(bridge) 해서 풀었는데 시간 초과 에러가 뜨더라.