algorithm/문제

[Python]백준 13335번/트럭/queue

유랄라- 2023. 3. 29. 11:45
반응형

https://www.acmicpc.net/problem/13335

 

13335번: 트럭

입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트

www.acmicpc.net

 

⚡️ 문제 설명

다리의 길이와 다리의 최대하중, 그리고 다리를 건너려는 트럭들의 무게가 순서대로 주어졌을 때, 모든 트럭이 다리를 건너는 최단시간을 구하는 프로그램

⚡️ 해결 방법

bridge에 모든 트럭이 지나갈 때 까지 ( while bridge) 반복한다.

기다리고 있는 truck 이 있다면

현재 bridge 위에 있는 트럭의 무게 합 sum(bridge) 과 기다리고 있는 첫번째 트럭 truck[0] 의 합이 다리의 최대 하중  L 보다 작다면 bridge 에 트럭을 추가한다.

최대 하중 L 보다 크다면 bridge 에 0을 추가한다.

 

이를 반복하다가 모든 트거이 다 지나가게 되면 time 을 출력한다.

 

 

 

 

⚡️ 코드

import sys
input=sys.stdin.readline

# n : 트럭 수
# w : 다리 길이
# L : 다리 최대 하중
n, w, L = map(int, input().split())
truck = list(map(int, input().split()))

bridge = [0] * w
time = 0
# bridge에 모든 트럭이 지나갈 때 까지 반복
while bridge:
    time += 1
    bridge.pop(0)
    if truck:
        if sum(bridge) + truck[0] <= L:
            bridge.append(truck.pop(0))
        else:
            bridge.append(0)
print(time)

 

반응형