[백준 13335] 트럭

김태민·2026년 4월 19일

최종 코드

from collections import deque

n, w, l = map(int, input().split())
truck = list(map(int, input().split()))

que = deque()
truckQue = deque()
time = 0

for _ in range(w):
  que.append(0)

for i in range(len(truck)):
  truckQue.append(truck[i])

while(len(que) != 0):
  
  # 시간은 계속 흐름
  time += 1
  que.popleft()
  
  # 다음 차가 다리에 올라갈 수 있을 때
  if(len(truckQue) > 0 and sum(que) + truckQue[0] <= l):
    que.append(truckQue.popleft())
    
  # 다음 차가 다리에 올라갈 수 없을 때
  elif(len(truckQue) > 0 and sum(que) + truckQue[0] > l):
    que.append(0)


print(time)

가장 핵심은 '큐의 길이를 유지' 하는 것이였다.
다리 위에 올라간 트럭들이 얼만큼 이동했는지 일일이 생각하는건 너무 복잡하기 때문에, 시간은 계속 흐르고 큐에선 값이 계속 빠져나가는 상태를 가장해야 했다.
만약 무게로 인해 트럭이 올라갈 수 없다면 0을 추가해 큐의 길이를 유지할 수 있다.

0을 추가해 시뮬레이션 상태를 유지한다는 발상에 대해 배울 수 있었다

profile
빠르게 성장하는 개발자

0개의 댓글