from collections import deque
def solution(bridge_length, weight, truck_weights):
truck_weights = deque(truck_weights)
q = deque()
cnt = 0
while truck_weights:
if q:
for i in range(len(q)):
q[i][0] -= 1
if q[0][0] == 0:
q.popleft()
truck = truck_weights.popleft()
cnt += 1
if sum(map(lambda x: x[1], q)) + truck <= weight and len(q) < bridge_length:
q.append([bridge_length, truck])
else:
truck_weights.appendleft(truck)
while q:
cnt += 1
for i in range(len(q)):
q[i][0] -= 1
if q[0][0] == 0:
q.popleft()
return cnt
deque를 사용해서 문제 해결
q에 birdge_lenth 정보와 트럭의 무게를 함께 저장해서 다리가 꽉 차 있는지, 트럭을 추가해도 되는지 확인하며 진행해나가는 방식이다.
마직막에 while문을 통해 q를 비워주면서 다리 위에 남아있는 트럭이 모두 지나가는 것을 구현