반응형
처음에는 시간을 계산해서 구해주려고 했다.
실패한 코드
from collections import deque
n,w,l=map(int,input().split())
truck=list(map(int,input().split()))
d=deque()
s=0
time=0
for x in truck:
if x+s<=l:
s+=x
d.append(x)
else:
time+=w
while s+x>l:
y=d.popleft()
s-=y
if d:
time+=1
s+=x
d.append(x)
if d:
time+=w
while d:
d.popleft()
time+=1
print(time)
이 경우
5 2 2
1 1 1 1 1과 같은 경우를 생각하지 못했다.
정답은 무지성 덱 시뮬레이션 이다.
덱으로 다리를 만들어서 직접 트럭을 이동시켜주었다.
from collections import deque
n,w,l=map(int,input().split())
truck=deque(list(map(int,input().split())))
bridge=deque([0]*w)
time=0
while truck:
bridge.popleft()
if len(bridge)<w:
x=truck.popleft()
if sum(bridge)+x<=l:
bridge.append(x)
else:
truck.appendleft(x)
bridge.append(0)
time+=1
while sum(bridge)!=0:
bridge.append(0)
bridge.popleft()
time+=1
print(time)
반응형