알고리즘 공부/파이썬(Python)

백준 13335번 트럭 파이썬

마달랭 2024. 7. 8. 01:17
반응형

리뷰

덱을 사용하여 풀어주었다.

 

문제 풀이

  1. 덱을 임포트 해주고 각 인자를 받아준다.
  2. 트럭의 무게 리스트를 덱으로 변환해주고 현재 다리 상황을 나타낼 덱도 초기화 해준다.
  3. 시간을 참조할 변수도 0으로 초기화 해준다.
  4. 루프가 실행될때 time을 1올려주고 다리 위에 차가 있다면 머무를 시간을 1씩 감소시킨다.
  5. 만약 다리위의 첫번째 차의 시간이 0이 되었을 경우 덱에서 없애준다.
  6. 현재 다리 위 차들의 전체 무게를 계산하고 새로운 트럭이 들어와도 된다면 트럭을 다리에 넣어준다.
  7. 트럭이 모두 다리를 지나갔을 경우 루프를 종료시킨 후 time을 출력해 준다.

 

참고 사항

인덱스 에러가 나지 않도록 적절히 조건을 적용해 주자

 

정답 코드

def q13335():
    # 백준 13335번 트럭 파이썬
    from collections import deque

    n, w, l = map(int, input().split())
    lst = deque(list(map(int, input().split())))
    bridge = deque()
    time = 0
    while lst or bridge:
        time += 1
        if bridge:
            for i in range(len(bridge)):
                bridge[i][0] -= 1
            if bridge[0][0] == 0:
                bridge.popleft()
        weight = sum(map(lambda x: x[1], bridge))
        if lst:
            if weight + lst[0] <= l:
                bridge.append([w, lst.popleft()])
    print(time)
q13335()

 

 

728x90
반응형