이번 문제는 다리를 큐를 이용하여 해결하였다. 다리를 큐로 구현하고, 0을 다리의 길이만큼 큐에 채운다. 그리고 while문을 돌며 큐의 맨 앞을 꺼내고, 이 값이 0이 아닐 경우 도착 리스트에 값을 넣어준다. 그리고 만약 현재 인덱스가 n보다 크거나 같거나, 다리 위의 총 무게에 현재 트럭의 무게를 더한 값이 다리의 최대하중보다 클 경우, 다리 큐에 0을 넣어준다. 그 외에는 다리에 현재 인덱스에 해당하는 트럭을 올리고, 현재 인덱스를 1 증가시킨다. 이 과정이 끝나면 시간 변수를 1 증가시킨다. while문은 도착 리스트의 길이가 n이 될 때까지 반복되고, while문이 끝나면 시간 변수를 반환하여 값을 도출한다.
from collections import deque
n, w, l=map(int, input().split())
a=list(map(int, input().split()))
bridge=deque([0 for _ in range(w)])
def move():
cur=0
time=0
arrived=[]
while len(arrived)<n:
tmp=bridge.popleft()
if tmp:
arrived.append(tmp)
if cur>=n or sum(bridge)+a[cur]>l:
bridge.append(0)
else:
bridge.append(a[cur])
cur+=1
time+=1
return time
print(move())