코테 대비 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로 만들면 알아서 분해됨