[Python] 다리를 지나는 트럭

허창원·2023년 5월 15일
0
post-thumbnail
post-custom-banner
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를 계산하는 방법을 사용했다.

post-custom-banner

0개의 댓글