๐Ÿ’ก๋ฌธ์ œ ๋ถ„์„ ์š”์•ฝ

๊ตณ์ด ์‚ฌ์šฉํ•˜์ž๋ฉด ํ..? ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค index์˜ ๊ฐ’์„ ์ฐจ๋ก€๋Œ€๋กœ ์ง€์šธ์ง€ ๊ตฌํ•˜๋Š”๊ฒƒ

๐Ÿ’ก์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„

์‚ญ์ œํ•  ์ธ๋ฑ์Šค ๊ฐ’์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•œ ๋’ค, K - 1 ์„ ๋”ํ•œ ์ธ๋ฑ์Šค ๊ฐ’์„ ์‚ญ์ œํ•œ๋‹ค. ์‚ญ์ œํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค ๊ฐ’์ด ์ „์ฒด ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด

(์‚ญ์ œํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค) % (ํ˜„์žฌ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ญ์ œํ•  ์ธ๋ฑ์Šค ๊ฐ’์„ ๋‹ค์‹œ ์ •ํ•œ๋‹ค.

์ข…์ด์— ํ•œ ๋ฒˆ ์“ฐ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ.

๐Ÿ’ก์ฝ”๋“œ

N, K = map(int, input().split())

origin = [i + 1 for i in range(N)]
result = []
pop_index = 0
for i in range(N):
    pop_index = (pop_index + (K - 1)) % len(origin)
    result.append(origin.pop(pop_index))
 
print(str(result).replace('[', '<').replace(']', '>'))

๐Ÿ’ก์‹œ๊ฐ„๋ณต์žก๋„

O(n)

๐Ÿ’กย ํ‹€๋ฆฐ ์ด์œ 

์ถœ๋ ฅํ•  ๋•Œ ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ๋Š” [ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜ ๋ฐฑ์ค€ ์‚ฌ์ดํŠธ์—์„œ๋Š” < ๊ธฐํ˜ธ๋ฅผ ์š”๊ตฌํ–ˆ์Œ.

๐Ÿ’กย ํ‹€๋ฆฐ ๋ถ€๋ถ„ ์ˆ˜์ • or ๋‹ค๋ฅธ ํ’€์ด

.replace ์‚ฌ์šฉ

๐Ÿ’กย ๋А๋‚€์  or ๊ธฐ์–ตํ• ์ •๋ณด

์ถœ๋ ฅ ํƒ€์ž… ์‹ ๊ฒฝ์“ฐ๊ธฐ, ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ‘ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด๋ฅผ ๋ณด๋‹ˆ ๋ฆฌ์ŠคํŠธ๋กœ ํ•  ๋•Œ ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚œ๋‹ค๊ณ  deque๋ฅผ ํ’€์ด์— ์“ฐ๋Š”๊ฑธ ๋ณด์•˜์Œ.

ํ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋Š” ๊ทธ๋ƒฅ deque๋ถ€ํ„ฐ ์“ฐ๊ณ  ๋ณด๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ๋˜๋ฐ ์†๋„ + ์–‘๋ฐฉํ–ฅ ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ์‰ฝ๊ธด ํ•˜์ง€๋งŒ ์ข€ ๋” ์–ด๋ ค์šด ๋ฌธ์ œ์—์„œ๋Š” ํ•„์š”ํ•œ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ธฐ์ดˆ ๋‚œ์ด๋„ ๋ฌธ์ œ๋“ค์€ ๊ตณ์ด ์‹ถ์—ˆ์Œ.

์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜๋ฉด deque๋ฅผ ๊ณ ๋ คํ•ด๋ณด์ž.