[백준/Python] 2364 풍선 터뜨리기

재활용병·2024년 1월 19일
0

코딩 테스트

목록 보기
98/157

[백준/Python] 2364 풍선 터뜨리기


풀이 코드 및 설명

from collections import deque
import sys

input = sys.stdin.readline

N = int(input())
balloons = deque(enumerate(map(int, input().split()), start=1))

result = []

while balloons:
    idx, move = balloons.popleft()
    result.append(idx)

    if move > 0:
        balloons.rotate(-move +1) #오른쪽으로 이동
    else: 
        balloons.rotate(-move)#왼쪽으로 이동

print(' '.join(map(str, result)))
  1. 입력
N = int(input())
balloons = deque(enumerate(map(int, input().split()), start=1))

N은 풍선 개수이고 balloons 는 각 풍선에 적힌 수를 입력받는 다.
enumerate() 함수는 각 풍선에 번호를 매기고 (start=1로 시작하여 풍선의 번호를 1부터 시작). 이렇게 각 풍선은 (번호, 종이에 적힌 수)의 형태로 deque에 저장된다.

  1. 풍선 터뜨리기
result = []
while balloons:
    idx, move = balloons.popleft()
    result.append(idx)

첫 번째 풍선 을 터뜨리고 그 안에 적힌 수 move 를 확인한다. 터진 풍선의 번호는 result 리스트에 저장한다.

  1. 다음 풍선으로 이동
if move > 0:
    balloons.rotate(-move + 1)  # 오른쪽으로 이동
else:
    balloons.rotate(-move)  # 왼쪽으로 이동

종이에 적힌 숫자가 양수인 경우에는 오른쪽으로 음수인 경우 왼쪽으로 이동한다. rotate() 함수를 사용하여 덱을 회전시킨 다음 터뜨릴 풍선을 맨앞으로 옮긴다. 양수인 경우 터진 풍선을 포함하여 이동 - move + 1, 음수인 경우 이미 터진 풍선을 제외하기에 -move 사용한다

profile
코딩 말고 개발

0개의 댓글

관련 채용 정보