[알고리즘] 프로그래머스 - 다리를 지나는 트럭

프로그래머스 - 다리를 지나는 트럭

다른 사람 풀이

def solution(bridge_length, weight, truck_weights):
    time = 0
    q = [0] * bridge_length

    while q:
        time += 1
        q.pop(0)
        if truck_weights:
            if sum(q) + truck_weights[0] <= weight:
                q.append(truck_weights.pop(0))
            else:
                q.append(0)
    return time

처음에 나는 bridge_length 길이를 가지는 리스트를 만들어놓고, 한번씩 실제로 truck들을 움직이는 시뮬레이션으로 구현했다. 하지만 그렇게하니 답이 1 차이로 맞는 것도 있고 틀리는 것도 있었다.

이 풀이는 q를 이용해서 bridge를 만드는데, 매 턴마다 q.pop(0)를 이용해서 맨 앞에 것을 지워줌으로서 상대적으로 모든 차가 한칸씩 앞으로 간 효과를 낸다. 그리고 들어올 수 있는 차가 있으면 차를 넣어서 길이를 유지하고, 그렇지 않으면 0을 넣어서 길이를 유지한다.

좋은 웹페이지 즐겨찾기