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

Algorithm/BOJ

[BOJ] ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ0 (#11866)

 

 

๋ฌธ์ œ 

 

์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ N๋ช…์˜ ์‚ฌ๋žŒ์ด ์›์„ ์ด๋ฃจ๋ฉด์„œ ์•‰์•„์žˆ๊ณ , ์–‘์˜ ์ •์ˆ˜ K(≤ N)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด์ œ ์ˆœ์„œ๋Œ€๋กœ K๋ฒˆ์งธ ์‚ฌ๋žŒ์„ ์ œ๊ฑฐํ•œ๋‹ค. ํ•œ ์‚ฌ๋žŒ์ด ์ œ๊ฑฐ๋˜๋ฉด ๋‚จ์€ ์‚ฌ๋žŒ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์›์„ ๋”ฐ๋ผ ์ด ๊ณผ์ •์„ ๊ณ„์†ํ•ด ๋‚˜๊ฐ„๋‹ค. ์ด ๊ณผ์ •์€ N๋ช…์˜ ์‚ฌ๋žŒ์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋œ๋‹ค. ์›์—์„œ ์‚ฌ๋žŒ๋“ค์ด ์ œ๊ฑฐ๋˜๋Š” ์ˆœ์„œ๋ฅผ (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด (7, 3)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์€ <3, 6, 2, 7, 5, 1, 4>์ด๋‹ค.

N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง€๋ฉด (N, K)-์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ

 

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

 

์ถœ๋ ฅ 

 

์˜ˆ์ œ์™€ ๊ฐ™์ด ์š”์„ธํ‘ธ์Šค ์ˆœ์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ/์ถœ๋ ฅ 

7 3     - >  <3, 6, 2, 7, 5, 1, 4>

 

 

ํ•ด์„ค ์ฝ”๋“œ 
n,k = map(int,input().split())
array = [i for i in range(1,n+1)]
key = 0
temp = k - 1
order = []

while array:
  key = (key + temp) % len(array)
  order.append(array.pop(key))
print('<'+', '.join(map(str,order))+'>')
๋ถ„์„ > ์šฐ์„  ์ด ๋ฌธ์ œ๋Š” k๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ๊ฐ€ pop๋˜๋ฉด์„œ ์ ์  ์ค„์–ด๋“œ๋Š” ๋ฐฐ์—ด ๊ธฐ์ค€ ๋ช‡ ๋ฒˆ์งธ ์›์†Œ๊ฐ€ pop์ด ๋˜๋Š”์ง€๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ’€์ดํ•˜์˜€๋‹ค. ๊ทธ์ค‘์—์„œ temp = k - 1์ธ ์ด์œ ๋Š” ๊ฐ’์ด ์•„๋‹Œ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•ด ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•จ์ด๋‹ค. pop๋˜๋Š” ๊ฐ’์˜ ์ธ๋ฑ์Šค์ธ key ๊ฐ’์€ ์ด์ „ key ๊ฐ’๊ณผ temp ๋ฅผ ๋”ํ•œ ๊ฐ’์— ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ ๋˜๋ฉฐ, pop๋œ ์›์†Œ๋Š” ์ƒˆ๋กœ์šด oreder ๋ฐฐ์—ด์— appendํ•œ๋‹ค. 

 

์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์  
print('<'+', '.join(map(str,order))+'>')
join ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜จ ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ์— join ํ•จ์ˆ˜์˜ ์‹ค์ œ ๋ชจ์–‘์€ ๊ตฌ๋ถ„์ž'.join(๋ฆฌ์ŠคํŠธ) ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.