💡 Codeing Test/백준

[백준_13335] 트럭 (python)

밈98 2023. 10. 5. 10:33
문제 링크

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

 

나의 풀이
from collections import deque

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

truck = deque(arr)
bridge = deque([0]*w)

cnt = 0
while truck:
    bridge.popleft()
    t=truck[0]
    if len(bridge) < w and sum(bridge) + t <=l:
        bridge.append(truck.popleft())
    else:
        bridge.append(0)
    cnt+=1
    print(bridge) 
    print(cnt)

print(cnt+w)

while truck가 기준일 때의 풀이이다.

 

밑에 print에 출력 값을 보면

프린트 출력값(예시1번)

deque([0, 7])

1

deque([7, 0])

2

deque([0, 4])

3

deque([4, 5])

4

deque([5, 0])

5

deque([0, 6])

6

 

답 : 8

트럭을 기준으로 한 풀이라 트럭이 빠져나올때 까지 끝나는것이 아니므로 정답에 +w를 해줘야한다

 

 

truck = deque(arr)
bridge = deque([0]*w)
cnt = 0
while bridge:
    cnt +=1
    bridge.popleft()
    if truck:
        if sum(bridge) + truck[0] <=l:
            bridge.append(truck.popleft())
        else:
            bridge.append(0)
    print(bridge)
    print(cnt)

print(cnt)

while bridge 다리를 기준으로 시간을 세주면

deque([0, 7])

1

deque([7, 0])

2

deque([0, 4])

3

deque([4, 5])

4

deque([5, 0])

5

deque([0, 6])

6

deque([6])

7

deque([])

8

 

답 : 8

 

다리를 기준으로 하면 다리가 전부 비어있을때까지 돌아가기때문에 cnt만 결과값을 빼주면 된다!