Queue 문제이다.
- 각 원소가 각자 남은 시간정보를 포함하도록 코드를 짜기가 어렵기 때문에 0을 채운 Bridge를 만들어서 물리적으로(?) 트럭이 다리를 넘어갈 수 있도록 표현했다.
- Queue 두개를 동시에 다뤄야 하기 때문에 둘의 pop 순서를 생각해봐야 함정에 안 빠지고 풀 수 있다.
예를 들어,
이 부분에서 Queue 의 pop 순서가 잘못되면(다리 위의 head를 가장 먼저 pop시키지 않으면) 다리 위의 모든 트럭(7트럭)과 대기 큐의 4트럭의 합이 10을 넘기 때문에 다리 위로 append되지 않는다. 따라서 이 부분에서 시간이 1타임 지연된다.
소스코드:
def solution(bridge_length, weight, truck_weights):
bridge=[0]*bridge_length
time=0
while truck_weights:
bridge.pop(0)
if (sum(bridge)+truck_weights[0])>weight:
bridge.append(0)
else:
truck=truck_weights.pop(0)
bridge.append(truck)
time+=1
return time+len(bridge)
5번 테스트케이스에서 시간이 아슬아슬하게 통과한다.