https://www.acmicpc.net/problem/20055
독해가 더 어려웠던 문제..🤐
막상 이해하고 나면 컨테이어 벨트와 로봇을 큐로 관리하고 요구하는 그대로 시뮬레이션 하면 된다. 뭔가 아이디어 자체가 신선하고 재밌었음.
from collections import deque
n, k = map(int, input().split())
conveyer_queue = deque(list(map(int, input().split())))
robots = deque([False] * n) # 로봇 유무 큐
step = 1
while True:
# 회전
conveyer_queue.rotate(1)
robots.rotate(1)
robots[-1] = False # 마지막 robot drop
# 로봇 이동
for i in range(n - 2, -1, -1):
if robots[i] and not robots[i + 1] and conveyer_queue[i + 1] >= 1:
robots[i + 1] = True
robots[i] = False
conveyer_queue[i + 1] -= 1
robots[-1] = False # 마지막 robot drop
# 로봇 새로 올리기
if conveyer_queue[0] > 0:
conveyer_queue[0] -= 1
robots[0] = True
if conveyer_queue.count(0) >= k:
break
step += 1
print(step)
덕분에 큐.rotate(횟수) 새로 알아간다 !