현제의 현재이야기

[백준/python] 2346 -풍선터뜨리기 본문

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))

| 알고리즘

 

  1. 받은 리스트에 해당되는 번호 인덱스 하나 생성
  2. 우선 받은 리스트의 첫번째 요소를 포인터로 지정하고 받은 리스트에서 해당 리스트 popleft
  3. 똑같이 해당되는 숫자 리스트도 popleft하고 그걸 result 리스트에 삽입
  4. 그리고 나서 포인터 만큼 로테이트 하는데 첫번째 풍선 터뜨리고 로테이트 돌리기 때문에 pointer에 -1을 하고 돌린다. # pointer에 -를 붙이는 이유: 돌리는 방향이 달라서
Comments