티스토리 뷰
728x90
https://www.acmicpc.net/problem/2346
- 해설 :
1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선이 있다. 각 풍선 안에는 종이가 하나 들어있고, 종이에는 -N보다 크거나 같고, N보다 작거나 같은 정수가 하나 적혀있다. 이 풍선들을 다음과 같은 규칙으로 터뜨린다.
우선, 제일 처음에는 1번 풍선을 터뜨린다. 다음에는 풍선 안에 있는 종이를 꺼내어 그 종이에 적혀있는 값만큼 이동하여 다음 풍선을 터뜨린다. 양수가 적혀 있을 경우에는 오른쪽으로, 음수가 적혀 있을 때는 왼쪽으로 이동한다. 이동할 때에는 이미 터진 풍선은 빼고 이동한다.
풍선이 터지는 순서를 출력하는 문제이다.
- 풀이 :
순환 큐를 이용하면 쉽게 풀 수 있는 문제이다. 그러나 순환 큐를 구현하는 것보다 인덱스를 순환하는 것처럼 (mod를 사용하여) 구현하면 더욱 간단하게 해결할 수 있다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
if __name__ == "__main__":
N = int(input())
balloon = list(map(int,input().split()))
answer = []
check = [0]*N
idx = 0
for i in range(N):
answer.append(idx%N+1)
check[idx%N] = 1
cnt = balloon[idx%N]
if i<N-1:
while cnt:
c = cnt
if c > 0:
idx +=1
else:
idx -=1
if check[idx%N] == 0:
if cnt>0:
cnt -= 1
else:
cnt +=1
for i in answer:
print(i,end =" ")
|
cs |
320x100
'Algorithm > Data Structure' 카테고리의 다른 글
(Python) - BOJ(4949번) : 균형잡힌 세상 (0) | 2022.02.03 |
---|---|
(Python) - BOJ(2493번) : 탑 (0) | 2022.01.31 |
(Python) - BOJ(2164번) : 카드 2 (0) | 2022.01.30 |
(Python) - BOJ(1992번) : 쿼드 트리 (0) | 2022.01.30 |
(Python) - BOJ(1966번) : 프린터 큐 (0) | 2022.01.30 |
댓글
© 2022 WonSeok, All rights reserved