[๋ฐฑ์ค] 1158. ์์ธํธ์ค ๋ฌธ์ /Python - Silver4
โ๋ฌธ์
https://www.acmicpc.net/problem/1158
๋ฉ๋ชจ๋ฆฌ: 35052 KB, ์๊ฐ: 2588 ms
์๋ฃ ๊ตฌ์กฐ, ๊ตฌํ, ํ
์์ธํธ์ค ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1๋ฒ๋ถํฐ N๋ฒ๊น์ง N๋ช ์ ์ฌ๋์ด ์์ ์ด๋ฃจ๋ฉด์ ์์์๊ณ , ์์ ์ ์ K(≤ N)๊ฐ ์ฃผ์ด์ง๋ค. ์ด์ ์์๋๋ก K๋ฒ์งธ ์ฌ๋์ ์ ๊ฑฐํ๋ค. ํ ์ฌ๋์ด ์ ๊ฑฐ๋๋ฉด ๋จ์ ์ฌ๋๋ค๋ก ์ด๋ฃจ์ด์ง ์์ ๋ฐ๋ผ ์ด ๊ณผ์ ์ ๊ณ์ํด ๋๊ฐ๋ค. ์ด ๊ณผ์ ์ N๋ช ์ ์ฌ๋์ด ๋ชจ๋ ์ ๊ฑฐ๋ ๋๊น์ง ๊ณ์๋๋ค. ์์์ ์ฌ๋๋ค์ด ์ ๊ฑฐ๋๋ ์์๋ฅผ (N, K)-์์ธํธ์ค ์์ด์ด๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด (7, 3)-์์ธํธ์ค ์์ด์ <3, 6, 2, 7, 5, 1, 4>์ด๋ค.
N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ฉด (N, K)-์์ธํธ์ค ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ๐ปํ์ด
์ด ๋ฌธ์ ๋ ํ๋ฅผ ์ ์๋ฉด ๋น ๋ฅด๊ฒ ํ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค. ๋จผ์ ํ์ 1~N๋ฒ๊น์ง ์๋ฅผ ๋ฃ๋๋ค. K-1๋ฒ๊น์ง ๋นผ๊ณ ๋ค์ ํ์ ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ K๋ฒ์งธ ์๋ ํ์์ ๋นผ๊ณ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ์์ ๋ฅผ ์๊ฐํ๋ฉด ์ฒ์ ํ์ <1, 2, 3, 4, 5, 6, 7>์ด ์๋ค. ์ด ๋์ด๋ K = 3์ด๋ฏ๋ก K-1๊น์ง ๋นผ๋ฉด 1, 2๋ฅผ ๋นผ๊ณ ๋ค์ ํ์ ๋ฃ๋ ๊ฒ์ด๋ค. ๊ทธ๋ผ K๋ฒ์งธ ์๋ก 3์ด ๋์จ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ K-1๊น์ง ๋นผ๊ณ ๋ฃ์ผ๋ฉด ์ด ๋๋ <6, 7, 1, 2, 4, 5> ์์ผ๋ก ์ ๋ ฌ๋๊ณ K๋ฒ์งธ๋ฅผ ์ถ๋ ฅํ๋ฉด 6์ด ๋์จ๋ค. ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ถ๋ ฅ์ ํ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก <3, 6, 2, 7, 5, 1, 4>๊ฐ ๋๋ค.
๐ป์ฝ๋
import sys
from collections import deque
input = sys.stdin.readline
N, K = map(int, input().split())
q = deque([i for i in range(1, N+1)])
print('<', end='')
while q:
for _ in range(K - 1):
q.append(q.popleft())
if len(q) - 1 > 0:
print(q.popleft(), end=', ')
else:
print(q.popleft(), end='>')
๐ํ๊ธฐ
์ฒ์์๋ mod๋ก ์ธ๋ฑ์ค ๊ณ์ฐํด์ ์ฌ๊ท๋ก ํด๋น ์์น ์๋ฅผ ์ถ๋ ฅํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋๋ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฌ๋ค...์ฒ์ ํ ๋ ํ๋ฅผ ์ฐ๊ธด ํ๋๋ฐ ์ ์ ๋ ๊ฒ ์ฐ๋ ๊ฑด ์๊ฐํ์ง ๋ชปํ์๊น... ์๋ฃ๊ตฌ์กฐ๋ฅผ ์๊ณ ์์ด๋ ํ์ฉํ ์ค ๋ชจ๋ฅด๋ฉด ๋ง์งฑ ๋๋ฃจ๋ฌต...๐ฅฒ