먼저 위 문제를 이해해보자.
# 11866
import sys
n, k = map(int, sys.stdin.readline().split())
lst = []
ans = []
for i in range(1, n + 1):
lst.append(i)
idx = 0
while lst:
idx += k - 1
if idx >= len(lst):
idx %= len(lst)
ans.append(str(lst.pop(idx)))
print("<", ", ".join(ans), ">", sep="")
이 문제에서 까다로웠던 점은 리스트에서 값이 계속 삭제되어 인덱스가 변한다는 점이었다. 또한 리스트가 계속 짧아지면서 k번째 이후의 인덱스가 리스트의 크기보다 같거나 클 때 새로운 인덱스를 구하는 방법에 있어서 어려움이 있었다.
위 문제는 만약 인덱스가 리스트의 크기보다 같거나 클 때 인덱스를 리스트의 길이로 나눈 나머지를 다시 새로운 인덱스로 할당하여 문제를 해결했다.