Python

[Python/파이썬] 백준 #2346 풍선 터뜨리기

Doldoi 2025. 3. 20. 01:14

문제 링크: https://www.acmicpc.net/problem/2346

문제

코드

from collections import deque

n = int(input())
nums = list(map(int, input().split()))

circle = deque([i for i in range(n)])
order = []

while circle:
    current = circle.popleft()
    order.append(current+1)
    move = nums[current]
    
    if move > 0:
        circle.rotate(-move+1)
    else:
        circle.rotate(-move)
    
print(*order)

 

위의 코드에서 사용한 deque.rotate(n)은 collections.deque 객체에서 사용하는 메소드로, 리스트의 원소를 순환 이동 시킨다.

[1, 2, 3, 4, 5] 에서

    rotate(2)를 하면 오른쪽으로 2칸 이동

        [4, 5, 1, 2, 3]

    rotate(-2)를 하면 왼쪽으로 2칸 이동

        [3, 4, 5, 1, 2]

이런 식으로 rotate()의 인자가 양수인지 음수인지에 따라 방향이 바뀐다.