๐Ÿงท ๋ฌธ์ œ

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

N๋ช…์˜ ์‚ฌ๋žŒ์ด ์›์„ ์ด๋ฃจ๋ฉด์„œ ์•‰์•„์žˆ์„ ๋•Œ, K๋ฒˆ์งธ ์‚ฌ๋žŒ์„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

๐Ÿ›  ํ’€์ด

์ด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์–ด๋–ป๊ฒŒ ํ’€์–ด๊ฐ€์•ผ ํ•˜๋Š”์ง€๋ณด๋‹ค๋Š” ์–ด๋–ป๊ฒŒ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š”์ง€ ์• ๋ฅผ ๋จน์—ˆ๋‹ค.
๋•๋ถ„์— ํŒŒ์ด์ฌ์˜ ์ถœ๋ ฅํ˜•์‹๊ณผ join์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ์˜€๋‹ค.

Step 1.
 n๊ณผ k๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์ค€ ํ›„์— peoples๋ผ๋Š” queue๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.
 peoples์˜ ์›์†Œ๊ฐ€ ์—†์–ด์งˆ ๋•Œ๊นŒ์ง€ while๋ฌธ์„ ์ด์šฉํ•ด k๋ฒˆ ์งธ ์›์†Œ๋ฅผ popleftํ•ด์คŒ๊ณผ ๋™์‹œ์— res๋ผ๋Š” ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— append ํ•ด์ฃผ์—ˆ๋‹ค.

Step 2.
 res๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๋“ค์„ joinํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ์—์„œ ์›ํ•˜๋Š” ํฌ๋งท์œผ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

  • Pyhton์˜ join ํ•จ์ˆ˜
    : ๋ฆฌ์ŠคํŠธ์— ํŠน์ • ๊ตฌ๋ถ„์ž๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.
    '๊ตฌ๋ถ„์ž'.join(๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ)์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค. ใ€€ex) '-'.join(['a', 'b', 'c']) => 'a-b-c'

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ๋ดค๋Š”๋ฐ ๊ตณ์ด queue๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์•„๋„ list๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•˜๋‹ˆ ๋‚ด ์ฝ”๋“œ์™€ ๋น„๊ตํ•ด ํ›จ์”ฌ ๋น ๋ฅธ ์‹œ๊ฐ„์— ํ•ด๊ฒฐํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿ–Š ๋‚˜์˜ ์ฝ”๋“œ

import sys
from collections import deque

input = sys.stdin.readline

if __name__ == "__main__":
    n, k = map(int, input().split())
    res = []

    peoples = deque(range(1, n+1))
    while peoples:
        for _ in range(k-1):
            peoples.append(peoples.popleft())
        res.append(peoples.popleft())


    #     *** list๋ฅผ ์ด์šฉํ•œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ***
    # peoples_list = list(range(1, n+1))
    # index = 0
    # while peoples_list:
    #     index = (index + k - 1) % len(peoples_list)
    #     res.append(peoples_list.pop(index))

    print(f"<{', '.join(map(str, res))}>")