[Idea]
먼저, 출력이 풍선 안에 숫자가 아닌 Index의 번호가 나와야 하기 때문에 입력받은 숫자와 함께 Index를 함께 저장해주었다.
예를 들면, 예제 입력에 3 2 1 -3 1을 (3,1) (2,2) (1,3) (-3,4) (-1,5) 처럼 저장하는 것이다.
그리고 pop을 하면 먼저 첫번째 요소가 양수인지 음수인지 판별을 해준다.
만약 양수라면 pop을 하고 음수라면 popleft를 한다
먼저 첫번째 풍선을 pop하면 (3,1)이 나오고 3은 양수이므로 (3,1)을 제외하고 pop을 풍선안에 적혀있는 숫자(k) 만큼 pop을 하면서 k-1만큼 append해준다
이러면 (3,1) // (2,2) (1,3) (-3,4) (-1,5) 에서 (-3,4) (-1,5) (2,2) (1,3) 처럼
k-1만큼 append하고 마지막(k번째) 으로 pop을 하면 (-3,4)가 나온다.
(-3,4)를 보며 -3이므로 음수이다. 이때는 3과 다르게 pop이 아닌 popleft를 한다.
현재 (-3,4)는 pop이 되어 나갔고 (-1,5) (2,2) (1,3)이 현재 deque의 상태이다.
앞서 말했던 바와 같이, -3의 절댓값이 3(k)만큼 popleft를 하고 2(k-1)만큼 append가 아닌 appnedleft를 해준다.
위 과정을 거치면 (-1,5) (2,2) (1,3) 이 (1,3) (2,2) (-1,5)에서 마지막(k)에서 popleft를 하면 (-1,5)가 나온다.
마지막으로 (2,2) (1,3)에서 -1의 절댓값인 1만큼 popleft를 하면 (1,3)이 나오고 마지막으로 남은 (2,2)를 pop하면 된다 .
각 풍선을 pop할 때마다, 두번째 요소인 index를 ans배열에 저장한다.
일단은 요로코롬 생각해보았다.
근데 이 방법보다는
[출처] https://excelsior-cjh.tistory.com/96
deque에 있는 rotate메소드를 쓰면 된다.
하..
rotate를 이용하여 문제를 해결한 방법