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)
반응형