[ BOJ / Python ] 13335번 트럭

황승환·2022년 6월 16일
0

Python

목록 보기
329/498


이번 문제는 다리를 큐를 이용하여 해결하였다. 다리를 큐로 구현하고, 0을 다리의 길이만큼 큐에 채운다. 그리고 while문을 돌며 큐의 맨 앞을 꺼내고, 이 값이 0이 아닐 경우 도착 리스트에 값을 넣어준다. 그리고 만약 현재 인덱스가 n보다 크거나 같거나, 다리 위의 총 무게에 현재 트럭의 무게를 더한 값이 다리의 최대하중보다 클 경우, 다리 큐에 0을 넣어준다. 그 외에는 다리에 현재 인덱스에 해당하는 트럭을 올리고, 현재 인덱스를 1 증가시킨다. 이 과정이 끝나면 시간 변수를 1 증가시킨다. while문은 도착 리스트의 길이가 n이 될 때까지 반복되고, while문이 끝나면 시간 변수를 반환하여 값을 도출한다.

Code

from collections import deque
n, w, l=map(int, input().split())
a=list(map(int, input().split()))
bridge=deque([0 for _ in range(w)])
def move():
    cur=0
    time=0
    arrived=[]
    while len(arrived)<n:
        tmp=bridge.popleft()
        if tmp:
            arrived.append(tmp)
        if cur>=n or sum(bridge)+a[cur]>l:
            bridge.append(0)
        else:
            bridge.append(a[cur])
            cur+=1
        time+=1
    return time
print(move())

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글