https://www.acmicpc.net/problem/2346
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
cmd = list(map(int, input().split()))
bal = deque([])
res = []
for a in range(n):
bal.append([cmd[a], a+1])
for i in range(len(cmd)-1):
val = bal.popleft()
res.append(val[1])
for _ in range(abs(val[0])-1):
if val[0] > 0:
temp = bal.popleft()
bal.append(temp)
else:
temp = bal.pop()
bal.appendleft(temp)
if val[0] < 0:
bal.appendleft(bal.pop())
res.append(bal[-1][1])
print(*res, end="")
큐를 이용해서 문제를 풀었다.
이중 배열을 이용해 [풍선 안에 들어있는 종이 값, 풍선의 위치] 를 저장한다.
만약 음수가 나오면 절대값을 이용해 반복문을 돌린다.
종이 값이 양수라면 맨 앞의 값을 빼고 (popleft), 뒤에 추가한다(append).
음수라면 맨 뒤의 값을 빼고(pop), 앞에 추가한다(appendleft).
종이 값이 음수인 경우엔 원하는 값이 맨 뒤에 있으므로 다시 한번 더 값을 빼고 앞에 추가하면 된다.