본문 바로가기

알고리즘/백준

[BOJ] [Python] 1158번 : 요세푸스 문제

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

li = [num for num in range(1, n + 1)]

result = []

for _ in range(n):
    i = k - 1
    length = len(li) - 1

    if i < length:
        result.append(str(li[i]))

        li = li[i + 1:] + li[:i]

    elif i == length:
        result.append(str(li[i]))

        li = li[:i]

    else:
        if not k % len(li):
            result.append(str(li[-1]))

            li.pop()

        else:
            i = (k % len(li)) - 1

            result.append(str(li[i]))

            li = li[i + 1:] + li[:i]

print("<" + ", ".join(result) + ">")