[백준] 2346 - 풍선 터뜨리기
1. 문제
2. 개요
1 ~ N번까지의 풍선이 원형으로 놓여있다.
가장 먼저 1번 풍선을 터뜨린 후, 풍선에 쓰인 숫자만큼 이동하여 다음 풍선을 터뜨리는 작업을 반복한다. 양수일 경우 오른쪽, 음수일 경우 왼쪽으로 이동하며, 이미 터진 풍선은 제외한다.
이 때, 터지는 풍선의 번호를 순서대로 출력하는 문제.
3. 풀이 및 코드
3-1. 풀이
풍선의 번호, 풍선에 쓰여진 숫자를 원소로 하는 풍선 배열을 만든다.
이 배열의 첫 원소가 항상 다음에 터질 풍선이 되도록 풍선을 터뜨리고 배열을 회전시키는 작업을 반복한다. 풍선을 터뜨리면서 풍선의 번호를 정답 배열에 저장한다.
모든 풍선이 터진 뒤, 정답 배열을 출력한다.
3-2. Python
import sys
from collections import deque
N = int(sys.stdin.readline())
ballons = deque(list(map(int, sys.stdin.readline().split())))
for i in range(N):
ballons[i] = [ballons[i], i+1]
answer = []
while ballons:
now = ballons.popleft()
answer.append(now[1])
if now[0] > 0:
ballons.rotate(1 - now[0])
elif now[0] < 0:
ballons.rotate(-now[0])
print(*answer)
Comments