[Silver I]
https://www.acmicpc.net/problem/13335
풀이
- 다리를 건너기 전 트럭들을 큐에 넣는다.
- 다리를 건너는 중인 트럭을 큐에 넣는다. (큐에 넣을때는 다리를 다 건널 때 까지 남은 시간을 같이 넣어준다.)
- 다리를 건너기 전 큐와 다리를 건너는 중인 큐에 있는 트럭이 모두 없어질 때까지 남은 시간을 1씩 줄이며 (1)~(2)과정을 반복한다.
from collections import deque
import sys
# global var
n = 0
w = 0
l = 0
before = deque()
onBridge = deque()
ans = 0
def solve():
global n, w, l, ans, before, onBridge
finished = 0
weightSum = 0
while finished != n:
# 다리 위에 트럭이 있으면
if onBridge:
# 아직 트럭이 다리를 건너는 시간이 지나지 않았다면
if onBridge[0][1] < 1:
weightSum -= onBridge[0][0]
finished += 1
onBridge.popleft()
# 아직 다리에 진입하지 못한 트럭이 있으면
if before:
# 다음 들어갈 트럭의 무게 + 다리 위의 트럭들의 무게가 다리의 최대 하중보다 작다면
if weightSum + before[0] <= l:
weightSum += before[0]
onBridge.append([before.popleft(), w])
for car in onBridge:
car[1] -= 1
ans += 1
# main
n, w, l = map(int, sys.stdin.readline().split())
before = deque(list(map(int, sys.stdin.readline().split())))
solve()
print(ans)
'백준 알고리즘 > Python' 카테고리의 다른 글
[백준] 1406. 에디터 - Python (0) | 2023.09.26 |
---|---|
[백준] 2667. 단지번호붙이기 - Python (2) | 2023.09.18 |
[백준] 1260. DFS와 BFS - Python (0) | 2023.09.18 |
[백준] 14502. 연구소 - Python (0) | 2023.09.17 |
[백준] 10808. 알파벳 개수 - Python (0) | 2023.09.04 |