덱을 사용하는 문제.
가중치cnt
가 양수, 음수 모두 있기 때문에 양수일 경우에는 -1을 해줘야 해당 풍선에 도착했을 때 cnt == 0
의 조건을 만족할 수 있다.
처음에 1번 풍선을 터뜨릴 때 양수일 때만 -1을 했어야하는데 그냥 -1을 해서 틀렸었다.
왜 틀린지 한참 찾다가 직접 케이스 넣어보고 알았음;
from collections import deque
n = int(input())
nxt = list(map(int, input().split()))
dq = deque((i+1, nxt[i]) for i in range(n))
balloon, cnt = dq.popleft()
if cnt > 0: cnt -= 1
print(balloon, end=' ')
while dq:
if cnt == 0:
balloon, cnt = dq.popleft()
if cnt > 0: cnt -= 1
print(balloon, end=' ')
elif cnt > 0:
dq.append(dq.popleft())
cnt -= 1
else:
dq.appendleft(dq.pop())
cnt += 1