[프로그래머스 lv2] 다리를 지나는 트럭 Python

DH·2022년 4월 6일
0

coding test

목록 보기
2/10

Queue 문제이다.

  1. 각 원소가 각자 남은 시간정보를 포함하도록 코드를 짜기가 어렵기 때문에 0을 채운 Bridge를 만들어서 물리적으로(?) 트럭이 다리를 넘어갈 수 있도록 표현했다.
  2. 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번 테스트케이스에서 시간이 아슬아슬하게 통과한다.

profile
Person

0개의 댓글