풀이 시간
- 41m
- 코테 준비를 하다보면서 느끼는 게, 문제의 표현이 조금 명확하지 않은 경우도 있다는 점이다. 최대한 꼼꼼히 읽어보고 센스있게 해석하는 자세가 필요할듯.
구현 방법
- 문제에서 시키는 대로 구현하면 되는 문제이다
- 나는 그냥 내구도와 로봇이 있고 없고를 2차원 리스트를 이용하여 저장해주었다
-> deque([[1, 1], [2, 1], [3, 0], [4, 0], [5, 0], [6, 0]] 이런 식으로 (deque는 rotate 내장 함수가 있어서 회전 시킬 때 편하다)
- +) 1번, 2번 끝나고 내리는 위치에 로봇이 있다면 바로 내려줘야함
코드
import sys
from collections import deque
N, K = map(int, sys.stdin.readline()[:-1].split())
tmp = list(map(int, sys.stdin.readline()[:-1].split()))
A = deque([])
for n in range(2*N):
A.append([tmp[n], 0])
cnt = 0
while True:
cnt += 1
A.rotate(1)
if A[N-1][1] == 1:
A[N-1][1] = 0
for i in range(N-2, -1, -1):
if A[i][1] == 1:
if A[i+1][0] >= 1 and A[i+1][1] == 0:
A[i][1] = 0
A[i+1][1] = 1
A[i+1][0] -= 1
if A[N-1][1] == 1:
A[N-1][1] = 0
if A[0][0] != 0:
A[0][1] = 1
A[0][0] -= 1
zero = 0
for i in range(2*N):
if A[i][0] == 0:
zero += 1
if zero >= K:
break
print(cnt)
결과