문제 링크
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만 결과값을 빼주면 된다!
'💡 Codeing Test > 백준' 카테고리의 다른 글
백준 19583) 싸이버 개강 총회 (python) (1) | 2024.03.05 |
---|---|
백준 3190) 뱀 (python) (1) | 2024.02.26 |
[백준_2468번] 안전 영역 (python) (0) | 2023.08.05 |
[백준_4963번] 섬의 개수 (python) (0) | 2023.08.05 |
백준) 1717번_집합의 표현 (python) (0) | 2023.05.22 |