Algorithm/Queue

[Baekjoon 13335 / Python / 실버1] 트럭

양선규 2024. 8. 16. 16:52
728x90
반응형

문제

from collections import deque
import sys
input = sys.stdin.readline

N, W, L = map(int, input().split())
truck = list(map(int, input().split()))

q = deque([0] * W) # 큐 사용
time = 0 # 경과시간
while q:
    time += 1 # 반복할 때마다 시간 증가
    q.popleft()

    if truck:
        if sum(q) + truck[0] <= L: # 무게 제한에 걸리지 않으면 다리에 올리기
            q.append(truck.pop(0))
        else:
            q.append(0) # 무게에 걸렸다면, 다리길이를 맞추기 위해 0 추가

print(time)

 

큐, 구현, 시뮬레이션 문제이다.

길이와 최대하중이 정해진 다리를 N대의 트럭이 지나가는데에 총 시간이 얼마나 걸리느냐를 구하는 문제이다.

 

큐를 사용해서 풀면 되는데, while문을 사용해서 한번 반복될 때마다 일단 popleft를 한 후,

최대 하중 제한에 걸리지 않는다면 트럭을 올리고,

하중 제한에 걸려 트럭을 올리지 못했다면 다리 길이를 맞춰주기 위해 0을 추가해 주고,

시간을 1씩 증가시키면 된다.

입력받은 트럭을 다 소모한 후에도 큐가 소모되기 위해 while문이 몇번 더 돌아야 하기 때문에, if truck 조건문을 추가해 주어야 한다.

 

while문이 반복될 때마다 큐는 실제로 트럭이 지나가는 것 처럼 갱신된다. 시뮬레이션 하듯이 코드로 구현해 주면 되는 문제이다.

728x90
반응형