
아래 백준 로고를 클릭하면 해당 문제로 이동합니다 😀
아이고 두야 ... 엄청 간단한 문제인줄 알았는데 생각보다 그건 아니었음(사실 내가 멍청한게 맞음)
풀어보자면, 문제에서 풍선이 원형으로 놓여있다는 점에 주목했다.
입력받은 풍선 속 종이 숫자를 enumerate를 이용해 인덱스 번호와 함께 묶어서 생각했다.
그리고 이걸 큐에 넣고 q를 계속 돌아보자.
1번 풍선을 터트리고 나면 숫자 3을 얻을 수 있다. 그러면 4번 풍선을 터트려야 하는데, 다음 터트려야 할 풍선을 큐의 맨 앞으로 가져오는 걸 반복하면 금방 답이 나온다.
deque.rotate를 사용할건데, -1이라면 반시계방향으로 한칸, +1이라면 시계방향으로 한칸 큐가 회전한다.
풍선 속 종이의 숫자가 음수일수도, 양수일수도 있기 때문에 이 문제에 사용하기 딱이다!
그래서 음수일때와 양수일때 구분을 해서 큐를 돌려주면 된다.
아래에서 회전하는 모습을 볼 수 있다.
>>> print(q)
deque([(0, 3), (1, 2), (2, 1), (3, -3), (4, -1)])
deque([(3, -3), (4, -1), (1, 2), (2, 1)])
deque([(4, -1), (1, 2), (2, 1)])
deque([(2, 1), (1, 2)])
deque([(1, 2)])
deque([])
from collections import deque
N = int(input())
poong = list(map(int, input().split()))
q = deque(enumerate(poong))
result = []
while q:
idx, movement = q.popleft()
result.append(idx + 1)
if movement > 0:
q.rotate(-(movement -1))
elif movement < 0:
q.rotate(-movement)
print(*result)
