[BOJ] 2346: 풍선 터트리기

이슬비·2023년 11월 30일
0

Algorithm

목록 보기
109/110

deque에는 신기한 메소드들이 많다!

1. 내 풀이: 실패

import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
dq = deque(list(range(1, n+1)))
nlist = list(map(int, input().rstrip().split()))
result = []
num = 1

while dq:
    for i in range(num-1):
        dq.append(dq.popleft())
    num = dq.popleft() # 1
    result.append(num)  # 1 추가
    num = nlist[num-1] if nlist[num-1] > 0 else len(dq) + nlist[num-1] + 1 # 


for i in range(len(result)-1):
    print(result[i], end=' ')
print(result[-1])

어느 부분이 틀린지는 모르겠는데 자꾸 8%에서 틀린다 ㅜㅜ 이건 좀 더 파보아야 할 것 같음

2. 다른 풀이

import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
q = deque(enumerate(map(int, input().split())))
ans = []

while q:
    idx, paper = q.popleft()
    ans.append(idx + 1)

    if paper > 0:
        q.rotate(-(paper - 1))
    elif paper < 0:
        q.rotate(-paper)

print(' '.join(map(str, ans)))

출처: https://velog.io/@hygge/Python-%EB%B0%B1%EC%A4%80-2346-%ED%92%8D%EC%84%A0-%ED%84%B0%EB%9C%A8%EB%A6%AC%EA%B8%B0-deque

dequerotate를 이용하면 탐색하는 방향을 바꿔줄 수 있다!

3. 느낀점

그래도 이제 어느 부분에서 시간 초과가 나는지 정도는 해결할 수 있는 정도가 되었음!

profile
정말 알아?

0개의 댓글