덱을 이용하여 컨베이어 벨트를 표현하였다.
덱속에 내구도와 로봇의 존재 여부를 넣어서 덱 하나로 모든 것을 관리 하였다.
from collections import deque
# input
N, K = map(int, input().split(" "))
belt = list(map(int, input().split(" ")))
belt_length = N*2 -1
queue = deque()
for i in belt:
queue.append([i, False])
result = 0
while True:
last = queue.pop()
queue.appendleft(last)
queue[N-1][1] = False
for i in range(N-2,-1,-1):
now = queue[i]
if now[1]:
next_index = i + 1
if queue[next_index][0] > 0 and queue[next_index][1] == False:
queue[next_index][0] -= 1
queue[i][1] = False
queue[next_index][1] = True
if i == N -2:
queue[next_index][1] = False
if queue[0][0] > 0 and queue[0][1] == False:
queue[0][0] -= 1
queue[0][1] = True
broken = 0
for i in queue:
if i[0] ==0:
broken+=1
result +=1
if broken >= K:
print(result)
break
문제를 잘못 읽어서 1에서 타고 2N에서 내리는줄 알고 풀어서 한참 고생했다..
역시 구현 문제는 문제 잘 읽고 푸는게 시간 단축에 가장 중요한 요인인듯 하다 ..
'백준' 카테고리의 다른 글
[백준 13549] 숨바꼭질 3 (python) 우선순위 큐를 이용한 구현 (0) | 2023.01.02 |
---|---|
[백준 4659] 비밀번호 발음하기 python (50%에서 틀림) (0) | 2023.01.02 |
[백준 3190] 뱀 python (tc5 tc6 틀림) (3) | 2022.12.23 |
[백준 9205] 맥주 마시면서 걸어가기 python (0) | 2022.12.21 |
[백준 2468] 안전영역 (python) 시간초과 해결 (0) | 2022.03.18 |