bridge
로 다리를 표현했다.bridge
위에 있는 트럭을 모두 앞으로 1칸 전진다음에 다리를 건너는 트럭의 무게 + 현재 다리 위에 있는 트럭들의 무게의 합
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
bridge = deque([0] * bridge_length)
truck_weights = deque(truck_weights)
on_bridge = 0 # 다리 위에 올라간 트럭의 무게합을 담는 변수
while bridge:
answer += 1 # 시간 +1초
on_bridge -= bridge.popleft() # 1칸 전진
# 대기중인 트럭이 남아있다면
if truck_weights:
if truck_weights[0] + on_bridge <= weight:
bridge.append(truck_weights[0])
on_bridge += truck_weights.popleft()
else:
bridge.append(0)
return answer
어떻게 구현을 해야할지 감도 안 잡히고 입출력 예시도 이해가 되지 않아서 다른 사람의 풀이를 보고 나서야 풀 수 있었다. 다음에 꼭 다시 풀어볼 것!
그리고 다리 위에 올라가있는 트럭의 무게 합을 구할 때 list의 sum()을 사용하면 sum()의 시간복잡도가 O(N)이기 때문에 시간 초과가 났다. 항상 메소드를 사용할 때 시간복잡도를 염두에 두고 풀어야겠다.