문제
코드
My answer
import sys
input=sys.stdin.readline
n=int(input())
ball=list(map(int,input().split()))
index=[i+2 for i in range(n-1)]
result=[1]
i=0
a=ball.pop(i)
while(len(ball)!=0):
if(a>0):
i=(i-1+a)%len(ball)
else:
i=(i+a+len(ball))%len(ball)
a=ball.pop(i)
b=index.pop(i)
result.append(b)
print(*result)
Another answer
n=int(input())
a=[*map(int,input().split())]
b=list(enumerate(a))
i=0
c=[]
while 1:
c.append(b[i][0]+1)
x=b.pop(i)[1]
if not b: break
if x>0: i=(i+x-1)%len(b)
else: i=(i+x)%len(b)
print(*c)
풀이
우선 문제를 풀 때 중요한 점은 풍선이 터지면서 인덱스도 계속 바뀐다는 것이다. 하나씩 해보면서 규칙을 찾아보면 위처럼 양수일 때와 음수일 때 인덱스가 바뀌는 점화식이 찾아지고 그대로 계산하면된다. 풍선을 터뜨리면서 인덱스는 원래 인덱스를 추출해야하므로 인덱스 리스트도 미리 만들어 놓고 풍선을 터뜨리면서 같이 인덱스도 없애면서 결과리스트에 넣었다. 아래 코드는 나와 동일한테 인덱스 리스트 만들 때 enumerate를 사용했다.
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #14425- 문자열집합 (0) | 2022.01.22 |
---|---|
[Python] 백준 #1620- 나는야 포켓몬 마스터 이다솜 (0) | 2022.01.21 |
[Python] 백준 #1935- 후위 표기식2 (0) | 2022.01.21 |
[Python] 백준 #9184- 신나는 함수 실행 (0) | 2022.01.20 |
[Python] 백준 #3986- 좋은 단어 (0) | 2022.01.19 |