๋ฐฑ์ค ๋ฌธ์ ๋ชจ์
๋ฌธ์ ๋งํฌ
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 ์์
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๋ฐฑ์ค 10866๋ฒ - ๋ฑ (0) | 2023.03.21 |
---|---|
[Swift] ๋ฐฑ์ค 2164๋ฒ - ์นด๋2 (0) | 2023.03.21 |
[Swift] ๋ฐฑ์ค 18258๋ฒ - ํ 2 (0) | 2023.03.20 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV.1 ๋ฐํํ๋ฉด ์ ๋ฆฌ (0) | 2023.03.19 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV.1 ๋์ถฉ ๋ง๋ ์ํ (0) | 2023.03.19 |