컨베이너 벨트 위의 로봇 골드5 (백준, 구현)
2023. 1. 28. 19:02ㆍ코딩 테스트 준비
728x90
반응형
from collections import deque
n, k = map(int, input().split())
a = deque(map(int, input().split())) # 내구도. A1, A2, ..., A2N
robot = deque([0] * n) # 벨트위에 있는 로봇
result = 0
while True:
result += 1
# 1. 벨트 회전한다.
a.rotate(1)
robot[-1] = 0
robot.rotate(1)
robot[-1] = 0 # 내리는 위치에 도달한 경우, 즉시 내림a
# 2. 로봇 이동하기. 이동하려는 칸에 로봇 x, 내구도 1이상 남아야함.
for i in range(n - 2, -1, -1): # 먼저 올라간 로봇부터 진행
if a[i + 1] >= 1 and robot[i + 1] == 0 and robot[i] == 1:
robot[i + 1] = 1
robot[i] = 0
a[i + 1] -= 1
robot[-1] = 0 # 내리는 위치에 도달한 경우, 즉시 내림
# 3. 올리는 위치에 내구도 0 아니면 로봇 올리기 & 내구도 감소
if a[0] != 0 and robot[0] != 1:
robot[0] = 1
a[0] -= 1
# 4. 내구도 0인 칸 수가 k이상이면 종료
if a.count(0) >= k:
break
print(result)
rotate에 대해 알게되고 구현문제를 푸는 게 어렵다는 것을 다시 한 번 깨닫는다.
728x90
반응형
'코딩 테스트 준비' 카테고리의 다른 글
특정한 최단경로 골드4 (백준, 다익스트라) (0) | 2023.01.28 |
---|---|
최단경로 골드4 (백준, 다익스트라) (0) | 2023.01.28 |
스티커 실버1 (백준, DP) (0) | 2023.01.28 |
한국이 그리울 땐 서버에 접속하지 실버3 (백준, 문자열) (0) | 2023.01.28 |
타노스 실버 3 (백준, 문자열) (0) | 2023.01.27 |