풀이


요세푸스 순열의 순서는 주어진 수열에서 K 번째 원소를 순차적으로 반환했을때 나타난다.

K 가 수열의 길이을 초과할 경우 나머지를 통해 다음 순서를 알아낼 수 있다.

그 수식은 아래 order 에 명시되어 있다.

수열의 모든 원소가 반환되었을 때 출력조건에 맞게 정답을 출력해주면된다.

소스코드


import sys
 
input = sys.stdin.readline
 
n, k = map(int, input().split())
circle = [i for i in range(1, n+1)]
order = 0
ans = []
 
for i in range(n, 0, -1):
    order = (order+k-1) % i
    temp = circle.pop(order)
    ans.append(temp)
 
print("<" + str(ans)[1:-1] + ">")

References