본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬]11866번 요세푸스 문제 0

by 현장 2021. 5. 3.

-코드

n, k = map(int, input().split())
arr = [i for i in range(1, n + 1)]
r = []
n2 = 0
for i in range(n):
    n2 += k - 1
    if n2 >= len(arr):
        n2 %= len(arr)
    r.append(str(arr.pop(n2)))

print("<%s>" % (", ".join(r)))

처음에 어떤 값이 출력이 되는지는 이해를 했는데 특정 값이 증가하고 배열의 길이가 넘어가면 배열 크기만큼  빼줘야 하는 것까지 접근을 했지만 그대로 입력을 했을 때, 다른 입력을 넣으면 인덱스 오류가 생겨서 나머지 함수를 이용했습니다. 그리고 처음에 remove와 append를 이용해서 배열을 지우고 더했지만 pop이 더 편할 거 같아 변경을 하고 출력 부분은 <> 부분과 사이에 , 부분을 몰라서 찾아서 해결을 하였습니다.