from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
wait_truck = deque(truck_weights)
bridge = deque([0 for _ in range(bridge_length)])
bridge_weight = 0
while len(bridge):
answer += 1
bridge_weight -= bridge[0] # 트럭 지나가면 다리 무게에서 빼주기
bridge.popleft() # 다리 위에 있는 차량을 지나감
if wait_truck: # 기다리는 트럭없으면 다리위에 있는 트럭만 지나가는 계산하기
if bridge_weight + wait_truck[0] <= weight: # 트럭이 다리 위에 올라갈 수 있는지 확인하기
truck = wait_truck.popleft() # 기다리는 차량이 없으면 첫 if에서 걸러주므로 오류 발생하지 않음
bridge_weight += truck # 트럭 무게 다리에 더해주기
bridge.append(truck) # 다리에 트럭 올림
else:
bridge.append(0)
return answer
풀이 방법
다리 위에 트럭을 올리고 0을 추가해주기 위해서 큐 자료구조를 사용했다.
if sum(bridge) + wait_truck[0] < = weight:
에서 sum을 사용하니 test case5에서 계속 시간 초과가 발생했다. 그래서 bridge_weight를 계산하는 방법을 사용했다.