코테 대비 python/백준

2346 덱 rotate

ylab 2023. 2. 2. 16:42

https://www.acmicpc.net/problem/2346

 

2346번: 풍선 터뜨리기

1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선

www.acmicpc.net

from collections import deque
n=int(input())
#딕셔너리에 키와 벨류 값을 넣어야 겠다.
value = list(map(int, input().split()))
ballon = dict()

for _ in range(n):
    ballon[_+1] = value[_]
   
#덱에 풍선들을 넣어야 겠다 왜??? => 값에 따라서 왼쪽 오른쪽 
#pop()오른쪽 제거 popleft()왼쪽제거
#종이에 0은 적혀있지 않으므로 음수면?, 양수면?
queue = [ i+1 for i in range(n)]
queue = deque(queue)
#### rotate 사용

while queue:
    if len(queue) ==1:
        a = queue.popleft()
        print(a,end='')
    else:
        a = queue.popleft()
        print(a,end=' ')
        if ballon[a] > 0:
            queue.rotate(-ballon[a]+1)
            
        else:
            queue.rotate(-ballon[a])
            
        





#### 
#### 문자열을 이용해 deque를 만들면 각 문자가 요소로된 리스트 형태의 deque가 만들어진다!!
####

공부하면서 알게된 사실인데 

 

문자열을 deque로 만들면 알아서 분해됨