알고리즘
[프로그래머스] 코딩테스트 연습/코딩테스트 연습/스택_큐/다리를 지나는 트럭(python3)
수만이
2022. 1. 6. 22:05
우선 선입선출이기 때문에 deque를 사용하였다. bridge_ing라는 deque를 만들어, 다리의 길이(bridge_length)만큼 0으로 채웠다. 또한 트럭의 무게가 들어간 truck_weights도 deque로 변환해주었다.
while문을 돌려, 다리에 올라가지 않은 트럭(truck_weights)과 다리위에 있는 트럭(bridege_ing)에 모두 트럭이 없을 때까지 반복해주었다. 이에 해당하지 않는다면 answer에 1초씩 더해준다.
그후 먼저 13번라인에서 다리위에 올라가지 않은 트럭이 없고, 다리위에 트럭이 존재한다면 한 칸씩 밀어준다.(popleft와 append(0)을 통해)
그렇다면 16~17번라인은 자동으로 다리위에 올라가지 않은 트럭이 있는 경우이므로, 다리위를 한 칸씩 밀고(popleft),
18번라인에서 올라갈 트럭의 무게와 다리의 무게가 견딜수 있는 무게보다 작다면
트럭을 다리위로 올려준다.( append(truck_weights.popleft()) )
20번라인에서는 올라갈 트럭의 무게와 다리의 무게가 견딜수 있는 무게보다 작다면
append(0)으로 자리만 밀어준다.
하지만 이렇게 한다면, 정확도는 맞지만 test case 5번에서 시간 초과가 발생한다. 따라서 sum으로 다리의 무게를 도출하는 것이 아닌, bridge_weight이라는 변수를 사용하여 다리의 무게를 표시하였고 통과하였다.