https://www.acmicpc.net/problem/1158
k번째 수를 pop하여 제거하면서 array에 저장한 후 array를 출력한다.
from sys import stdin
input = stdin.readline
n, k = map(int,input().split())
a = [i+1 for i in range(n)]
array = list()
cnt = 0
for i in range(n):
cnt = (cnt + k - 1)%len(a) #cnt가 a의 크기를 넘어서지 않도록 계산
array.append(str(a.pop(cnt))) #cnt번째 수를 재거하면서 array에 저장
print("<",", ".join(array),">",sep='')
queue를 이용하여 k번째 까지 pop하고 pop한 값을 다시 push한다. 그리고 가장 앞에 있는 수를 pop하면서 array에 저장한다.
from sys import stdin
from collections import deque
input = stdin.readline
n, k = map(int,input().split())
queue = deque()
array = list()
for i in range(1,n+1):
queue.append(i)
for i in range(n):
for j in range(k-1): #k-1번 수를 돌린다.
queue.append(queue.popleft())
array.append(str(queue.popleft()))
print("<",", ".join(array),">",sep='')