deque에는 신기한 메소드들이 많다!
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
dq = deque(list(range(1, n+1)))
nlist = list(map(int, input().rstrip().split()))
result = []
num = 1
while dq:
for i in range(num-1):
dq.append(dq.popleft())
num = dq.popleft() # 1
result.append(num) # 1 추가
num = nlist[num-1] if nlist[num-1] > 0 else len(dq) + nlist[num-1] + 1 #
for i in range(len(result)-1):
print(result[i], end=' ')
print(result[-1])
어느 부분이 틀린지는 모르겠는데 자꾸 8%에서 틀린다 ㅜㅜ 이건 좀 더 파보아야 할 것 같음
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
q = deque(enumerate(map(int, input().split())))
ans = []
while q:
idx, paper = q.popleft()
ans.append(idx + 1)
if paper > 0:
q.rotate(-(paper - 1))
elif paper < 0:
q.rotate(-paper)
print(' '.join(map(str, ans)))
deque
의 rotate
를 이용하면 탐색하는 방향을 바꿔줄 수 있다!
그래도 이제 어느 부분에서 시간 초과가 나는지 정도는 해결할 수 있는 정도가 되었음!