๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Problem Solving

[๋ฐฑ์ค€ BOJ - 1158 / ํŒŒ์ด์ฌ] ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

by Oh Seokjin 2022. 7. 20.

๐Ÿ” ๋ฌธ์ œ ๋ถ„์„

์›์„ ์ด๋ฃจ๋ฉฐ ์žˆ๋Š” ์›์†Œ๋“ค์˜ k ๋ฒˆ์งธ ๊ฐ’์„ ์ˆœ์„œ๋Œ€๋กœ ์ œ๊ฑฐํ•˜๋Š” ๋ฌธ์ œ

 

โ— ํ•ด๊ฒฐ ์•„์ด๋””์–ด 

k๋ฒˆ ์งธ ๊ฐ’์„ ์…€ ๋•Œ ์ž๊ธฐ ์ž์‹ ๋„ ํฌํ•จํ•˜๋ฏ€๋กœ, step = k-1

ํ˜„์žฌ ์œ„์น˜current์—์„œ step์„ ๋”ํ•œ ์œ„์น˜์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ

current + step์ด ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋ณด๋‹ค ํด ๊ฒฝ์šฐ์—๋Š” modular์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋‹ค์‹œ ์•ž์œผ๋กœ 

โœ”๏ธ ์ตœ์ข… ํ’€์ด

import sys

n, k = map(int, sys.stdin.readline().split())

josephus = [i for i in range(1, n+1)]
result = []
current = 0
step = k-1

for i in range(n):
    current += step
    if current +1 >= len(josephus):
        current = current % len(josephus)
    result.append(josephus.pop(current))

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

๋Œ“๊ธ€