1번부터 N번까지 N명의 사람들이 원을 이루며 앉는데, 이 때 순서대로 K번째 사람을 제거합니다.
한 사람이 제거되면 남은 사람들은 이루어진 원을 따라 이 과정을 반복합니다.
이 과정은 N명의 사람이 모두 제거될 때 까지 계속됩니다.
이 순서를 (N,K)-요세푸스 순열이라고 부를 때 이 순열을 구하는 문제입니다.
K번째 사람을 제거하기 위해서 queue를 이용합니다.
먼저 1부터 N번까지 사람들을 모두 순서대로 queue에 넣어 둡니다.
que = deque([i for i in range(1, n+1)])
이 후 K번째 사람을 queue에서 제외합니다.
이를 위해 K-1까지의 사람들은 queue에서 제거함과 동시에 다시 queue에 삽입합니다.
그리고 제거된 사람은 정답 순열을 기록하기 위한 배열에 별도로 기록합니다.
이 과정을 queue가 빌 때 까지 , 즉 모든 사람이 제외 될 때 까지 반복합니다.
while que:
for _ in range(k-1):
que.append(que.popleft())
ans.append(que.popleft())
이 문제는 정답을 출력하는 형식이 조금 번거롭습니다.