[백준] 요세푸스 문제

 

문제

class Node():
    def __init__(self, value, next_node = None, prev_node = None):
        self.value = value
        self.next_node = next_node
        self.prev_node = prev_node

n, m = map(int, input().split())

head = Node(1)
tail = Node(n)
cur = head

for i in range(2, n):
    new_node = Node(i)
    cur.next_node = new_node
    new_node.prev_node = cur
    cur = new_node
cur.next_node = tail
tail.prev_node = cur
head.prev_node = tail
tail.next_node = head

ls = []
cur = head
while len(ls) < n:
    count = 0
    for i in range(1, m):
        cur = cur.next_node
        
    if cur.value not in ls:
        ls.append(cur.value)
        now_prev = cur.prev_node
        now_next = cur.next_node
        cur.prev_node.next_node = now_next
        cur.next_node.prev_node = now_prev
        cur = now_next
        
print(f'<{", ".join(map(str, ls))}>')