[프로그래머스] 다리를 지나는 트럭(python)

.·2022년 6월 8일
0

문제 링크 - https://programmers.co.kr/learn/courses/30/lessons/42583


사고 과정

  • 입출력이 양쪽으로 있어서 deque를 사용하면 될 것 같았는데 생각보다 쉽지 않은 문제여서 답을 찾아봤다.
  • 우선 다리의 길이만큼 0으로 채운 스택을 선언하고, 그 스택에 아무 것도 남지 않을 때 까지 while문을 돌린다.
  • 스택의 가장 왼쪽에 있는 원소를 하나 빼고 시간에 +1을 해준다. 그리고 대기 트럭이 있다면 다리 위에 남은 트럭의 무게와 대기 트럭 중 다음에 들어올 트럭 무게의 합을 구해 다리가 버틸 수 있는 하중보다 작다면 다리에 다음 들어올 대기 트럭을 올린다. 만약 그렇지 않다면 다리 길이를 유지하기 위해 0을 추가해준다.(0은 무게에도 아무런 영향을 주지 않기 때문에)

정답 참고 풀이

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

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

0개의 댓글