DonHurry

[Python] ๋ฐฑ์ค€ 11866๋ฒˆ - ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ 0 ๋ณธ๋ฌธ

Problem Solving

[Python] ๋ฐฑ์ค€ 11866๋ฒˆ - ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ 0

_๋„๋… 2022. 11. 11. 23:12

๐Ÿ“– ๋ฌธ์ œ

 

11866๋ฒˆ: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ 0

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 

๐Ÿ”Ž ํ’€์ด

ํ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. deque๋ฅผ ์„ ์–ธํ•˜๊ณ , popleft ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด 0๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ์›์†Œ๋ฅผ O(1)์— ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์—์„œ๋ถ€ํ„ฐ ์ถ”์ถœํ•˜๋ฉด์„œ, ํ•ด๋‹น ์›์†Œ๊ฐ€ K๋ฒˆ์งธ๋ผ๋ฉด ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ผ๋ฉด ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์— ๋‹ค์‹œ ๋งจ ๋’ค๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

popleft ํ•จ์ˆ˜์˜ ๋น„์šฉ์ด O(1)์ด๋”๋ผ๋„, ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ์ „๋ถ€ ํƒ์ƒ‰ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ฐ๋ณด๋‹ค ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค pop(i)๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” K๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ๋ฝ‘๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋Š” ํ๋ฅผ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ป ์ฝ”๋“œ

import sys
import collections
input = sys.stdin.readline

N, K = map(int, input().split())
# ๋‚จ์€ ์ˆซ์ž๋“ค์˜ ๋ฐฐ์—ด
nums = collections.deque([x for x in range(1, N+1)])
result = []

cnt = 0
while nums:
    cnt += 1
    # ์•ž์—์„œ๋ถ€ํ„ฐ pop
    num = nums.popleft()
    # ๋งŒ์•ฝ K๋ฒˆ์งธ๋ผ๋ฉด ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
    if cnt == K:
        result.append(num)
        cnt = 0
    # K๋ฒˆ์งธ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹ค์‹œ nums ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
    else:
        nums.append(num)

print('<', end='')
print(*result, sep=', ', end='')
print('>')