취준/코딩테스트

백준 2346 (python): 풍선 터뜨리기

린구 2024. 6. 26. 15:03
반응형
import sys
from collections import deque

def breakBalloon(num):
    if num > 0:
        for _ in range(num-1):
            q.append(q.popleft())
    else:
        num = -num
        for _ in range(num):
            q.appendleft(q.pop())
    print(q[0], end = " ")
    return q.popleft()

N = int(input())
q = deque([i for i in range(1, N+1)])
paperList = list(map(int, sys.stdin.readline().split()))

print(1, end = " ")
answer = breakBalloon(paperList[q.popleft() - 1])
while q:
    answer = breakBalloon(paperList[answer - 1])

 

함수 선언해서 해봤는데 이게 더 복잡한 것 같다.. ㅋㅋㅋ

이것도 다른 덱 류와 같이 패턴 찾기 문제!

 

그런데 이렇게 할 필요 없이 `rotate()` 메서드를 사용하면 훨씬 간단하게 구현할 수 있다.

deque.rotate()

rotate(-1)은 원형 큐를 반시계방향으로 1칸 회전시키고, 

rotate(1)은 시계방향으로 1칸 회전시킨다.

 

대박.. 항상 `pop()` 하고 `append()` 하기 바빴는데

다음에 꼭 써봐야겠다

 

반응형