https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)www.acmicpc.net
진짜 쉬운 문제인데 그래도 집중안하면 답이 안나온다.
n,k=map(int,input().split())num=0 l=[x for x in range(1,n+1)]answer=[]
for _ in range(n):
num += (k-1) #처음에 리스트가 0부터 시작하니깐 빠지고, 그 다음부턴 리스트가 1개씩 없어지니깐 빠짐
if num>=len(l): num= num%len(l) answer.append(l.pop(num))
answer=list(map(str,answer))print('<'+', '.join(answer)+'>')파이썬의 deque를 이용한 방법
from collections import dequen,k=map(int,input().split())num=0
l=deque([x for x in range(1,n+1)])answer=[]for _ in range(n):
l.rotate(1-k) #음수이므로 앞의값들을 잘라내고 뒤에 붙여넣는다. answer.append(l.popleft())
print('<',end='')print(*answer, sep=', ', end='')print('>')