https://school.programmers.co.kr/learn/courses/30/lessons/42583
def solution(bridge_length, weight, truck_weights):
answer = 0
total=sum(truck_weights)
passing=[0]*bridge_length
passed=0
while passed!=total:
answer+=1
passed+=passing.pop(0)
if truck_weights and sum(passing)+truck_weights[0]<=weight :
passing.append(truck_weights.pop(0))
else:
passing.append(0)
return answer
❗ 위와 비슷한 코드이지만 deque를 사용하고 반복문 안의 sum()을 제거하여 실행 시간을 훨씬 단축시킴
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
total=sum(truck_weights)
truck_weights=deque(truck_weights)
passing=deque([0]*bridge_length)
passed=0
passing_weight=0
while passed!=total:
answer+=1
passing_weight-=passing[0]
passed+=passing.popleft()
if truck_weights and passing_weight+truck_weights[0]<=weight :
passing_weight+=truck_weights[0]
passing.append(truck_weights.popleft())
else:
passing.append(0)
return answer