구현, 큐 - 13335번: 트럭

jisu_log·2025년 7월 28일

알고리즘 문제풀이

목록 보기
61/105


from collections import deque

line = list(map(int, input().split()))

n, w, L = line[0], line[1], line[2]

trucks = list(map(int, input().split()))

# 다리 위에는 최대 w개의 트럭 올라갈 수 있음
# 트럭 무게 합은 L보다 작거나 같아야함
# 트럭이 들어와서 나가기까지 w초 소요

q = deque()


# w 길이만큼 큐에 0 넣어주기 - 트럭이 큐에서 한 칸 씩 이동하는 것을 구현하기 위함
for _ in range(w):
    q.append(0)


idx = 0
sec = 0

while idx < n:
    # 큐의 맨 앞 팝하기
    q.popleft()
    
    sec += 1
    new = trucks[idx]

    # 현재 큐 전체 합 + 새로운 트럭의 합이 L 이하라면 큐에 넣기
    if sum(q) + new <= L:
        q.append(new)
        idx += 1 # 인덱스 뒤로 보내기
    # 트럭을 넣을 수 없다면 0 채우기
    else:
        q.append(0)

# 트럭 리스트를 모두 큐에 넣었다면 남은 걸 모두 빼주기
while q:
    q.popleft()
    sec += 1

print(sec)

0개의 댓글