[백준] - 11866 요세푸스 문제 0 (Python)

밀루·2023년 8월 12일
0

BOJ

목록 보기
19/43

문제 링크

풀이과정

먼저 tmp를 제거해야할 위치를 저장하는 변수로 두고 while문을 돌면서 (배열의 인덱스는 0부터 시작하므로) k-1씩 더해주었다. 이때 tmp의 값이 len(l1)보다 크다면, tmp = tmp % len(l1)을 해주어 인덱스를 벗어나지 않도록 했다. 그리고 while문은 len(l1)이 0이면 빠져나오는 식으로 구현했다.

코드

import sys
n, k = map(int, sys.stdin.readline().split())
l1 = []
for i in range(1, n+1):
    l1.append(i)

result = []
tmp=k-1 #tmp는 제거할 "위치"
while True:
    result.append(l1.pop(tmp))
    if len(l1)==0:
        break
    tmp+=k-1
    if tmp>=len(l1):
        tmp%=len(l1)

# 출력
print("<", end='')
for i in range(n):
    if i==n-1:
        print(result[i], end='')
    else:
        print(str(result[i])+",", end=' ')
print(">", end='')
profile
이밀루의 도전

0개의 댓글