백준 1158번 바로가기
나의 풀이#
from collections import deque
import sys
n, k = map(int, sys.stdin.readline().split())
q = deque([i+1 for i in range(n)])
n = 1
ans = []
while q:
temp = q.popleft()
if n == k:
ans.append(temp)
n = 1
else:
q.append(temp)
n += 1
print('<', end='')
for i in ans[:-1]:
print(i, end=", ")
print(f'{ans[-1]}>')
CODE REVIEW#
queue
을 이용한 요세푸스 문제의 해결.
- 원형 array를 활용하는 방법도 있긴 하지만, 개인적으로 queue 활용하는 편이 깔끔해 보인다.
- 마지막에 출력하는 부분이 의외로 손이 많이 갔는데, for문을 사용하지 않고 싶다면
print(*ans, sep=', ', end='')
로 해결하는 방법도 있다.