반응형
포인트
- 있는 그대로 한 번 구현을 해봅시다.
- deque는 rotate 연산을 할 수 있으니 참고하시면 너무 좋습니다.
🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다.
python
from collections import deque
n, k = map(int, input().split())
belt = deque(map(int, input().split()))
robot = deque([0] * (2 * n - 1))
# 컨테이너 윗쪽만 생각하기
time = 1
while True:
# 1. 일단 한번 돌려준다.
belt.rotate(1)
robot.rotate(1)
robot[n - 1] = 0
for i in range(n - 2, -1, -1): # 뒷부터 보면서
if robot[i] == 1 and robot[i + 1] == 0 and belt[i + 1] >= 1:
# 로봇이 있고 다음칸에는 없으며 다음칸 내구도가 1이상일 때
# 로봇을 움직인다
belt[i + 1] -= 1
robot[i + 1] = 1
robot[i] = 0
robot[n - 1] = 0
if robot[0] == 0 and belt[0] >= 1:
# 로봇이 없고 벨트 내구도 가 있을 때
belt[0] -= 1
robot[0] = 1
if belt.count(0) >= k:
# k 이상 일때 종료하고 답을 출력
print(time)
break
time += 1
반응형
댓글