현제의 현재이야기

[백준/python] 11866 - 요세푸스 문제 본문

algorithm

[백준/python] 11866 - 요세푸스 문제

현재의 현제 2022. 6. 25. 15:26

from collections import deque

n, k = tuple(map(int, input().split()))
a = [
    i + 1
    for i in range(n)
]
a = deque(a)
results = []
while len(a) != 0:
    a.rotate(-(k - 1))
    pop = a.popleft()
    results.append(pop)

print('<',end='')
print(*results, sep=', ', end='')
print('>')

덱의 로테이트를 이용하니깐 매우 깔끔하게게 되었다.

| 알고리즘

  1. n, k 받고 1 ~ n까지의 수가 담긴 덱을 생성
  2. a가 빌 때까지 k - 1 번 왼쪽으로 로테이트하고 popleft

의의로 리스트 [] 를 <>로 바꾸는 것이 어려웠다.

 

파이썬 * unpacking 관련 정보

그리고 deque는 pop연산 중 특정한 위치의 값을 pop하지 못함 ex) a.pop(3)

Comments