[백준] 2346번 : 풍선 터트리기 (파이썬)

뚝딱이·2022년 11월 1일
0

문제풀이_백준

목록 보기
160/161



문제


나의 답안

from collections import deque
import sys

input=sys.stdin.readline

n=int(input())
arr=list(map(int,input().split()))
que=deque()

for i in enumerate(arr):
    que.append(i)

while len(que)>0:
    idx,num=que.popleft()
    print(idx+1,end=' ')
    if num>0:
        que.rotate(-(num-1))
    elif num<0:#num==0인경우는 xx
        que.rotate(-num)#음수*음수=양수

접근 방법

  • 덱의 rotate를 사용하면 쉽게 풀 수 있는 문제이다.
  • rotate()는 양수를 인자로 넣었을 때 오른쪽 방향(시계방향)으로 회전, 음수를 인자로 넣었을 때 왼쪽방향(반시계방향)으로 회전한다.
  • popleft한 값이 양수라면 왼쪽으로 이동하는데, 이때 왼쪽 값을 한번 pop했으므로 num-1만큼 회전해준다.
  • 음수라면 오른쪽으로 이동하면 되므로 그대로 이동해준다.

rotate를 원형으로 생각해 이동해줄 때의 값이 헷갈렸다.

0개의 댓글