본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 13335 트럭

by Alan_Kim 2023. 12. 10.
728x90
반응형

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

 

 

문제 해결

  • 다리를 que를 이용하여 해결하면 좋겠다는 생각이 바로 든다.
  • que안에 있는 숫자의 합은 l을 넘어서는 안된다.
  • 1초마다 FIFO로 첫 번째 트럭 or 공기(?)가 나가고 대기중인 트럭이 들어오거나 공기가 들어오는 시물레이션을 코딩하면 된다.
  • 공기가 들어갈지 트럭이 들어갈지의 기준은 다리에 있는 무게의 합+대기중인 트럭의 무게가 l보다 크면 공기가 들어가고 작거나 같으면 트럭이 들어가는 것이다.

 

CODE

import sys
input = sys.stdin.readline
from collections import deque
def solution():
    que = deque([0]*w, maxlen=w)
    t = 0
    total_weight = 0
    i = 0 # 대기중인 트럭 인덱스
    while i<n:
        t += 1
        total_weight -= que.popleft()
        if total_weight + W[i] <= l:
            que.append(W[i])
            total_weight += W[i]
            i += 1
        else:
            que.append(0)
    t += w
    return t
    



if __name__=='__main__':
    n, w, l = map(int, input().split())
    W = list(map(int, input().split()))
    answer = solution()
    print(answer)
728x90
반응형

댓글