문제가 약간 헷갈렸다
트럭 1대가 다리를 모두 건너기 위해서는 bridge_length대 만큼의 시간이 소요되는 것이 아니라 1초가 소요되고, bridge에 올라올 수 있는 트럭의 대수가 bridge_length인 것이다
그래서 bridge_length만큼의 bridge를 만들어주고, 모든 truck이 올라오고(if truck weights) bridge를 모두 지나갈 때까지(if bridge) 시간을 1초씩 추가하면서 연산을 진행한다
bridge_length의 최대가 10,000인데 연산을 계속 진행해서 그런지 테스트5에서 sum(bridge)를 하면 시간초과가 났다
번거롭기는 하지만 sum(bridge)를 따로 변수로 선정해주고, bridge에서 트럭이 내려오고 올라갈 때마다 업데이트를 해주면 된다
def solution(bridge_length, weight, truck_weights):
answer = 0
bridge = [0]*bridge_length
now = sum(bridge)
while bridge:
tmp = bridge.pop(0)
now -= tmp
answer += 1
if truck_weights:
#if sum(bridge)+truck_weights[0] <= weight:
if now+truck_weights[0] <= weight:
tmp = truck_weights.pop(0)
bridge.append(tmp)
now += tmp
else:
bridge.append(0)
return answer