import sys
from collections import deque
input = sys.stdin.readline
n, w, l = map(int, input().split())
truck = list(map(int, input().split()))
# 다리 길이만큼 0으로 초기화
queue = [0] * w
queue = deque(queue)
answer = 0
for t in truck :
while True :
# 맨 앞에 있는 수를 하나씩 pop
queue.popleft()
# 곧 들어갈 숫자 t와 큐에 있는 숫자의 합이 l보다 크면 0을 넣어줘서
# 다리 위의 트럭이 건너가도록
if sum(queue) + t > l :
queue.append(0)
answer += 1
continue
# 합이 l보다 작거나 같으면 트럭을 다리에 올린다.
else :
queue.append(t)
answer += 1
break
# 모든 트럭이 다리 위에 올라가고
# 마지막 트럭이 다리를 건널 때까지
while sum(queue) > 0 :
queue.popleft()
queue.append(0)
answer += 1
print(answer)
import sys
from collections import deque
input = sys.stdin.readline
n, w, l = map(int, input().split())
truck = list(map(int, input().split()))
queue = [0] * w
queue = deque(queue)
answer = 0
for t in truck :
while True :
queue.popleft()
answer += 1
if sum(queue) + t > l :
queue.append(0)
continue
else :
queue.append(t)
break
answer += w
print(answer)
# 모든 트럭이 다리 위에 올라가고 # 마지막 트럭이 다리를 건널 때까지 while sum(queue) > 0 : queue.popleft() queue.append(0) answer += 1
처음 코드에서 위와 같이 작성한 부분을
answer += w
이렇게 바꿀 수 있다.
마지막 트럭이 다리 위에 올라가고 다 건너기 위해선 다리의 길이만큼 이동해야 하므로
w를 더해주면 된다.
근데 코드 길이만 줄고 메모리랑 시간은 비슷하다.ㅎㅎ
문제를 다 풀고 다른 분들 코드를 참고하다 발견할 수 있었다.