본문 바로가기
Problem Solving

[백준 BOJ - 2346 / 파이썬] 풍선 터뜨리기

by Oh Seokjin 2022. 7. 30.

2346번: 풍선 터뜨리기 (acmicpc.net)

2346번: 풍선 터뜨리기

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

www.acmicpc.net

🔍 문제 분석

이전의 요세푸스 문제와 유사하게, 원을 이루며 있는 풍선들을 주어진 만큼씩 이동하며 탐색 순서를 찾는 문제

❗ 해결 아이디어

이전의 문제와 유사하지만 ±방향 모두로 이동할 수 있다.
따라서 두 경우를 나누어 생각하는 것이 중요

✔️ 최종 풀이

import sys

n = int(sys.stdin.readline())
balloons = list(enumerate(map(int, sys.stdin.readline().split())))

current_idx = 1
move = 0
answer = []

while n:
    current_idx += move
    if move < 0:
        current_idx %= n
    else:
        current_idx = (current_idx-1) % n
    popped, move = balloons.pop(current_idx)

    n -= 1
    print(popped+1, end=' ')

댓글