알고리즘

[BOJ] 2346 - 풍선 터뜨리기 (Python)

흙금 2023. 3. 1. 16:11

 

 

아이디어

 

덱을 이용하여 풍선 안 종이에 적힌 수에 따라 풍선을 회전한다.

 

 

풀이

 

덱을 사용하기 위해 collections 모듈의 deque를 불러온다.

 

enumerate 함수를 이용하여 풍선의 번호와 풍선 안 종이에 적힌 수를 튜플 형태로 덱 balloon에 저장한다.

 

for문에서 popleft로 balloon의 맨 앞 풍선을 꺼내 풍선의 번호와 종이에 적힌 수를 각각 r과 d에 할당한다.

결과값 리스트 res에 풍선의 번호를 추가하고, d에 따라 풍선을 이동한다.

d가 양수이면 풍선들을 왼쪽으로 회전(-)시키는데 popleft로 풍선이 하나 줄었으므로 rotate에 -(d-1)을 인자로 넘긴다.

d가 양수가 아니면(음수인 경우) 풍선들을 오른쪽으로 회전(+)시키기 위해 rotate에 -d를 인자로 넘긴다.

 

from collections import deque

N = int(input())
balloon = deque(enumerate(map(int, input().split()), start=1))
res = []
for _ in range(N):
    r, d = balloon.popleft()
    res.append(f'{r}')
    if d > 0:
        balloon.rotate(-(d-1))
    else:
        balloon.rotate(-d)
print(' '.join(res))