https://programmers.co.kr/learn/courses/30/lessons/42583
from collections import deque
def solution(bridge_length, weight, truck_weights):
bridge = deque([0] * bridge_length)
trucks = deque(truck_weights)
count = 0
answer = 0
while(trucks or count):
answer += 1
count -= bridge.pop()
if (trucks and count + trucks[0] <= weight):
truck = trucks.popleft()
count += truck
bridge.appendleft(truck)
else:
bridge.appendleft(0)
return answer
count
는 현재 다리의 무게, answer
는 시간이고 while문의 조건은 남은 트럭이 있거나 다리에 트럭이 있으면
으로 순회를 돌면서 trucks
에서 트럭을 빼 다리에 올리고 시간이 지날때마다 한자리씩 옮기는 과정을 거친다. 한자리씩 옮기는걸 rotate
함수를 사용하려했지만 생각해보니 deque
로 구현 가능해서 pop()
과 appendleft()
로 구현하였다. while
문이 끝나면 answer
를 리턴