현제의 현재이야기
[백준/python] 11866 - 요세푸스 문제 본문
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('>')
덱의 로테이트를 이용하니깐 매우 깔끔하게게 되었다.
| 알고리즘
- n, k 받고 1 ~ n까지의 수가 담긴 덱을 생성
- a가 빌 때까지 k - 1 번 왼쪽으로 로테이트하고 popleft
의의로 리스트 [] 를 <>로 바꾸는 것이 어려웠다.
파이썬 * unpacking 관련 정보
그리고 deque는 pop연산 중 특정한 위치의 값을 pop하지 못함 ex) a.pop(3)
'algorithm' 카테고리의 다른 글
[백준/python] 2346 -풍선터뜨리기 (0) | 2022.06.25 |
---|---|
[백준/python] 17827 - 달팽이리스트 (0) | 2022.06.25 |
[백준/python] 1021 - 회전하는 큐 (0) | 2022.06.25 |
[백준/python] 11501 - 주식 다국어 (0) | 2022.06.25 |
[백준/python] 2003 - 수들의 합 2 (0) | 2022.06.25 |
Comments