Skip to content

Commit

Permalink
[Silver III] Title: 풍선 터뜨리기, Time: 64 ms, Memory: 34016 KB -BaekjoonHub
Browse files Browse the repository at this point in the history
  • Loading branch information
Youn-Rha committed May 31, 2024
1 parent 7f34b16 commit 76100fa
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
32 changes: 32 additions & 0 deletions 백준/Silver/2346. 풍선 터뜨리기/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# [Silver III] 풍선 터뜨리기 - 2346

[문제 링크](https://www.acmicpc.net/problem/2346)

### 성능 요약

메모리: 34016 KB, 시간: 64 ms

### 분류

자료 구조, 덱

### 제출 일자

2024년 5월 31일 22:59:45

### 문제 설명

<p>1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선이 있다. 각 풍선 안에는 종이가 하나 들어있고, 종이에는 -N보다 크거나 같고, N보다 작거나 같은 정수가 하나 적혀있다. 이 풍선들을 다음과 같은 규칙으로 터뜨린다.</p>

<p>우선, 제일 처음에는 1번 풍선을 터뜨린다. 다음에는 풍선 안에 있는 종이를 꺼내어 그 종이에 적혀있는 값만큼 이동하여 다음 풍선을 터뜨린다. 양수가 적혀 있을 경우에는 오른쪽으로, 음수가 적혀 있을 때는 왼쪽으로 이동한다. 이동할 때에는 이미 터진 풍선은 빼고 이동한다.</p>

<p>예를 들어 다섯 개의 풍선 안에 차례로 3, 2, 1, -3, -1이 적혀 있었다고 하자. 이 경우 3이 적혀 있는 1번 풍선, -3이 적혀 있는 4번 풍선, -1이 적혀 있는 5번 풍선, 1이 적혀 있는 3번 풍선, 2가 적혀 있는 2번 풍선의 순서대로 터지게 된다.</p>

### 입력

<p>첫째 줄에 자연수 N(1 ≤ N ≤ 1,000)이 주어진다. 다음 줄에는 차례로 각 풍선 안의 종이에 적혀 있는 수가 주어진다. 종이에 0은 적혀있지 않다.</p>

### 출력

<p>첫째 줄에 터진 풍선의 번호를 차례로 나열한다.</p>

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import sys
from collections import deque


# sys.setrecursionlimit(100000)


def input():
return sys.stdin.readline()


# main
if __name__ == "__main__":
N = int(input())
lst = list(map(int, input().split()))
deq = deque([(a + 1, b) for a, b in enumerate(lst)])
while len(deq) != 0:
print(deq[0][0])
tmp = deq[0][1]
if tmp < 0:
tmp += len(deq)
deq.popleft()
deq.rotate(-(tmp - 1))

0 comments on commit 76100fa

Please sign in to comment.