import sys
commend = sys.stdin.readline().split()
N , K = int(commend[0]),int(commend[1])
queue = list(map(int,range(1,int(N+1))))
output = []
pointer = 0
while(len(output)!=N):
pointer = (pointer+(K-1))%len(queue)
output.append(str(queue.pop(pointer)))
print('<'+", ".join(output)+'>')
list 를 원판이라고 가정하고 진행
N = 7 / K = 3 인 경우,
- list = [1, 2, 3, 4, 5, 6, 7] / result = [ ]
- list = [4, 5, 6, 7, 1, 2] / result = [3]
- list = [7, 1, 2, 4, 5] / result = [3, 6] ....
pointer로 시작 위치를 기억하고 남은 인원으로 mod연산을 수행하여 다음 제거대상을 결정한다
N개가 제거되면 끝나기에 N번 반복
'알고리듬' 카테고리의 다른 글
[17413] 단어 뒤집기 2 (0) | 2022.03.11 |
---|---|
[10866] 덱 (0) | 2022.02.28 |
[10845] 큐 (0) | 2022.02.15 |
[1406] 에디터 (0) | 2022.02.10 |
[1874] 스택 수열 (0) | 2022.01.26 |