본문 바로가기
카테고리 없음

[알고리즘] 컨베이어 벨트 위의 로봇

by keel_im 2021. 3. 17.
반응형

포인트

  • 있는 그대로 한 번 구현을 해봅시다. 
  • 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
반응형

댓글