본문 바로가기

코딩

[Python] 백준 #1158. 요세푸스 문제

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

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

 

# 1158 - Python 3

import sys

input = sys.stdin.readline

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

arr = [i for i in range(1, n + 1)]
answer = []

idx = 0

for _ in range(n):
    idx += k - 1                                # pop될 arr 값의 idx
    
    if idx >= len(arr):                         # idx가 남은 수의 개수보다 큰 경우
        idx %= len(arr)
    
    answer.append(str(arr.pop(idx)))            # join 함수는 str형태에 적용됨

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

'코딩' 카테고리의 다른 글

[Python] 백준 #1076. 저항  (1) 2023.11.18
[Python] 백준 #1026. 보물  (0) 2023.09.22
[Python] 백준 #1676. 팩토리얼 0의 개수  (0) 2023.09.22
[Python] 백준 #1769. 3의 배수  (0) 2023.09.21
[Python] 백준 #1312. 소수  (0) 2023.09.21