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

일단 해볼게·2024년 3월 24일
0

백준

목록 보기
132/132

https://www.acmicpc.net/problem/11866

import sys

input = sys.stdin.readline # 시간 단축

N, K = map(int,input().split()) # N = 사람 수, K = 제거될 사람 순서
ans = []
arr = [i for i in range(1, N + 1)] 
num = 0

for i in range(N):
    num += K - 1 # K번째 사람 (인덱스로 변환)

    if num >= len(arr): # 인덱스 넘어가는 경우
        num = num % len(arr) 
    
    ans.append(str(arr[num])) # join을 위한 str 저장
    arr.pop(num)

print("<",', '.join(ans),">", sep="")

처음엔 사람을 제거하고 리스트를 짤라붙여 K번째 사람을 구하려했으나 리스트의 인덱스만으로 해결할 수 있는걸 알았다.

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글