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

eun·2024년 1월 24일

문제 2346

먼저 문제를 이해해보자.

  • 첫째 줄에는 풍선의 개수인 n이 주어진다.
  • 다음 줄에는 1번부터 n번까지 각 풍선에 적혀있는 -n ~ n의 숫자가 주어진다.
  • 처음에는 1번 풍선을 터뜨리고 이후에는 터진 풍선에 적혀있는 숫자만큼 이동한 후의 풍선을 터뜨린다.
  • 터지는 풍선의 번호 순서를 출력하는 문제이다.
# 2346

import sys
from collections import deque

n = int(input())

# enumerate를 사용하면 입력한 값 앞에 인덱스 번호를 붙여서 tuple 형태로 바꿔줌
lst = deque(enumerate(map(int, sys.stdin.readline().split())))
ans = []

while lst:
    idx, i = lst.popleft()
    ans.append(idx + 1)
    if i > 0:
        lst.rotate(-(i-1))
    else:
        lst.rotate(-i)

for j in ans:
    print(j, end= ' ')

위 문제를 처음 풀때는 lotate()를 알지 못해서 계속 런타임에러가 발생했다. 이후 deque에서 활용 가능한 lotate() 메서드를 사용해서 풀 수 있었다.
또한 enumerate를 사용하여 입력한 값 앞에 인덱스 번호를 붙여서 tuple 형태로 바꿔줌으로써 문제를 더 수월하게 해결할 수 있었다.

0개의 댓글