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=' ')
'Problem Solving' 카테고리의 다른 글
[백준 BOJ - 1620 / 파이썬] 나는야 포켓몬 마스터 이다솜 (0) | 2022.08.04 |
---|---|
[백준 BOJ - 2504 / 파이썬] 괄호의 값 (0) | 2022.08.01 |
[백준 BOJ - 1966 / 파이썬] 프린터 큐 (0) | 2022.07.30 |
[백준 BOJ - 10799 / 파이썬] 쇠막대기 (0) | 2022.07.27 |
[백준 BOJ - 1935 / 파이썬] 후위 표기식2 (0) | 2022.07.26 |
댓글