algorithm
[백준/python] 2346 -풍선터뜨리기
현재의 현제
2022. 6. 25. 15:28
from collections import deque
n = int(input())
a = list(map(int, input().split()))
a = deque(a)
number = [
i + 1
for i in range(n)
]
number = deque(number)
results = []
pointer = 0
for i in range(n):
pointer = a[0]
a.popleft()
pop = number.popleft()
results.append(str(pop))
if pointer >= 0:
a.rotate(-(pointer - 1))
number.rotate(-(pointer - 1))
elif pointer < 0:
a.rotate(-(pointer))
number.rotate(-(pointer))
print(' '.join(results))
| 알고리즘
- 받은 리스트에 해당되는 번호 인덱스 하나 생성
- 우선 받은 리스트의 첫번째 요소를 포인터로 지정하고 받은 리스트에서 해당 리스트 popleft
- 똑같이 해당되는 숫자 리스트도 popleft하고 그걸 result 리스트에 삽입
- 그리고 나서 포인터 만큼 로테이트 하는데 첫번째 풍선 터뜨리고 로테이트 돌리기 때문에 pointer에 -1을 하고 돌린다. # pointer에 -를 붙이는 이유: 돌리는 방향이 달라서