코딩하는 해맑은 거북이

[Python] 풍선 터뜨리기 - 백준 본문

코딩테스트

[Python] 풍선 터뜨리기 - 백준

#CJE 2023. 1. 21.
해당 글은 백준 2346번 문제 '풍선 터뜨리기'를 다룬다.

문제

https://www.acmicpc.net/problem/2346

 

2346번: 풍선 터뜨리기

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

www.acmicpc.net

 

설명

쉽게 풀 수 있는 방법으로 원형큐로 생각해서 rotate 시키면서 답을 구해나갈 수 있는 문제이다.

첫번째 인덱스 값을 지워나가면서 진행하기에 while 다음문에 터뜨릴 풍선을 첫번째 인덱스값으로 위치시켜야 한다.

그래서 rotate를 사용해서 큐 전체를 원형으로 돌린다.

이동할 값이 적혀있는 paper 값이 0보다 크면, 첫번째 인덱스 값을 지웠으므로 -1을 해줘야한다.

 

 

코드

from collections import deque

n = int(input())
queue = deque(enumerate(map(int,input().split())))

while queue:
    index, paper = queue.popleft()
    if paper > 0:
        queue.rotate(-(paper-1))
    if paper < 0:
        queue.rotate(-paper)
    print(index+1, end=' ')

     

 

 

'코딩테스트' 카테고리의 다른 글

[Python] 연속합 - 백준 (DP)  (0) 2023.01.21
[Python] 회전하는 큐 - 백준  (0) 2023.01.21
[Python] 달팽이 - 백준  (0) 2023.01.21
[Python] 퇴사 - 백준 (DP)  (0) 2023.01.20
[Python] 귤 고르기 - 프로그래머스  (0) 2023.01.18
Comments