๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

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

by hyebin (Helia) 2023. 3. 20.
๋ฐ˜์‘ํ˜•
๋ฐฑ์ค€ ๋ฌธ์ œ ๋ชจ์Œ

๋ฌธ์ œ ๋งํฌ

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

 

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

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

www.acmicpc.net

 

๋ฌธ์ œ

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

 

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 ≤ 5,000)

์ถœ๋ ฅ

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

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

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜

  • ์ž๋ฃŒ ๊ตฌ์กฐ
  • ํ

๋ฌธ์ œ ํ’€์ด

  • N๊ณผ K๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
  • arr์— 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฐฐ์—ด์— ๋‹ด์•„ ์ €์žฅํ•œ๋‹ค.
  • 0๋ถ€ํ„ฐ N๊นŒ์ง€, index์— (index+K-1)%arr์˜ ํฌ๊ธฐ ๋ฅผ ์ €์žฅํ•œ๋‹ค. (index+k-1 => ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1 ๋นผ๊ธฐ, %arr.count => ๋ฐฐ์—ด arr์˜ ์ธ๋ฑ์Šค ๋ฒ”์œ„๋ฅผ ๋„˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด) 
    • arr์˜ index๋ฒˆ ์งธ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•ด result์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  • ๋ฐฐ์—ด result๋ฅผ String ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ ํ›„, join ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ", "๋ฅผ ์š”์†Œ ์‚ฌ์ด์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์†Œ์Šค์ฝ”๋“œ

let input = readLine()!.split(separator: " ").map{Int(String($0))!}
var arr = Array(1...input[0])
var result = [Int]()
var index = 0

for _ in 0..<input[0] {
    index = (index+input[1]-1)%arr.count
    result.append(arr.remove(at: index))
}

print("<\(result.map{String($0)}.joined(separator: ", "))>")
  • 12ms ์†Œ์š”
๋ฐ˜์‘ํ˜•