살아있는 사람을 넣고 죽은 사람을 뺄 큐, 죽은 사람을 넣을 큐 이렇게 두 개의 큐를 사용한다.
내가 처음에 작성한 코드는 수식 없이 +1씩 카운팅해서 k와 같아질 때 죽이는 방식으로 했다.
카운팅으로만 코드를 짜니까 코드가 복잡해지고 길어졌다.
구글링 결과 수식으로 해결할 수 있었다.
n, k = map(int, input().split())
queue = list(range(1, n + 1))
death_queue = []
index = 0
count = 1
while n != len(death_queue):
if index < n:
index += 1
else:
index = 1
if count != k:
queue.append(queue[0])
queue.pop(0)
count += 1
else:
death_queue.append(queue[0])
queue.pop(0)
if not queue:
break
count = 1
print("<", ", ".join(map(str, death_queue)), ">", sep= "")
n, k = map(int, input().split())
person = list(range(1, n + 1))
dead_person = []
index = 0
for i in range(n):
index += k - 1
if index >= len(person):
index %= len(person)
dead_person.append(person.pop(index))
print("<", ", ".join(map(str, dead_person)), ">", sep= "")
index += k - 1
dead_person.append(person.pop(index))
if index >= len(person):
index %= len(person)