2022. 11. 4. 10:59ใAlgorithm
๋ฐฑ์ค - ์ผ์(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/2212
๋์ ํ์ด
๋ฌธ์ ๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ค์ ๋ ๋ฌธ์ ๋ค.
๊ธฐ์ง๊ตญ์ ์ด๋ ํ ์ขํ์ ์ค์นํ๊ณ ์ปค๋ฒํ๋ ๋ฐฉ์์ธ ์ค ์์๋๋ฐ ๋ค๋ฅธ ๊ธ๋ค์ ์ดํด๋ณด๋ ๊ตฌ๊ฐ์ ์ปค๋ฒํ๋ค๋ ๋ง์ด์๋ค.
์ฌ์ค ์ง์ค๊ตญ์ ์์ ๊ฐ๋ฅ์์ญ์ ๊ณ ์๋๋ก ์์์ ์ฐ๊ฒฐ๋ ๊ตฌ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ก๋ค๋ ๋ง์ ๋ณด๊ณ ์ง์์ ํ์ผ๋ ์์ด๋์ด๊ฐ ๋ ์ค๋ฅด์ง ์์์ ์ขํ๋ก ์๊ฐํ ๊ฒ ๊ฐ๋ค.
๊ทธ๋์ ์ด ๋ฌธ์ ๋ ๊ทธ๋ฆฌ๋ํ๊ฒ ์ ๊ทผํด์ผํ๋๋ฐ, ๊ฐ ์ผ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ๊ฐ ์ผ์์ฌ์ด์ ๊ฑฐ๋ฆฌ์ฐจ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋๋ค.
๊ทธ๋ผ ์ผ์์ฌ์ด์ ๊ฑฐ๋ฆฌ์ฐจ๊ฐ ๋์ ๊ฒ๋ถํฐ ์๊ฒ๋๋๋ฐ ์ง์ค๊ตญ์ ๊ฐ์-1๋ฒ๋งํผ ๋ฐฐ์ด์์ ๋นผ์ฃผ๋ฉด ๋๋ค.
1 3 6 7 9 ๋ฅผ์์๋ก ๋ณด๋ฉด
3-6์ด ์ผ์์ฌ์ด์ ํฉ์ด ๊ฐ์ฅ ํฌ๋ค. ๊ทธ๋ผ ์ด ๋ถ๋ถ๋ถํฐ ๋บด๋ ๊ฒ์ธ๋ฐ ๊ทธ ์ด์ ๋ ๊ฐ์ฅ ํฐ ๋ถ๋ถ์ ๋บ์ผ๋ก์จ {1, 3}, {6, 7, 9}๊ฐ ๋ฌถ์ด๊ฒ ๋๋ค. ์ด ์งํฉ์ ๊ฐ๊ฐ 2์ 3์ ์ปค๋ฒํ๊ธฐ๋๋ฌธ์ ๋๊ฐ์ ํฉ์ธ 5๊ฐ ๋์ด ์ต์๊ฐ์ด ๋๋ค.
๋ง์ฝ ๊ฐ์ฅ ์์ ๊ฒ์ผ๋ก ๋ฌถ๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น? 6๊ณผ7์ ์ฌ์ด๋ 1์ด๋ค. ์ด ๋ถ๋ถ์ ๋บ๋ค๋ฉด {1, 3, 6}, {7, 9}๊ฐ ๋์ด ๊ฐ๊ฐ 5, 2๋ฅผ ๋ค๋ฃจ๊ฒ ๋๊ณ ํฉ์ 7์ด๋๋ค. ์ฆ ๊ฐ์ฅ ๊ธด ๊ตฌ๊ฐ์ ๋ถ๋ฆฌ์ํค๋ ์ง์ ์ผ๋ก ์ค์ ํ๋ฉด ๋๋ ๊ฒ์ด๋ค.
import Foundation
let N = Int(readLine()!)!
let K = Int(readLine()!)!
var arr = readLine()!.components(separatedBy:" ").map{Int($0)!}
var distances = [Int]()
arr.sort(by: <)
if K >= N { // ๊ธฐ์ง๊ตญ์ด ์ผ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด ์ข
๋ฃ
print(0)
exit(0)
}
for i in 1..<arr.count {
distances.append(arr[i]-arr[i-1])
}
distances.sort(by: >)
for i in 0..<K-1 {
distances.removeFirst()
}
print(distances.reduce(0, +))
ํผ๋๋ฐฑ
์ด๋ฐ ๋ฌธ์ ๋ ๋ ธํธ์ ์ด๊ฒ์ ๊ฒ ์ ์ด๋ณด๋ฉด์ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋ ๊ฒ ์ค์ํ ๊ฒ ๊ฐ๋ค.
๊ฐ ์ง์ค๊ตญ์ ์์ ๊ฑฐ๋ฆฌ๊ฐ ์ต์๊ฐ์ด ๋๊ธฐ์ํด์๋ ์ง์ค๊ตญ์ด ์ด๋ ๊ตฌ๊ฐ์ ๊ธฐ์ ์ผ๋ก ๋๋ ์ ธ์ผํ๋์ง๊ฐ ํต์ฌ์ด๋ฉฐ ์ด๋ ์กฐ๊ธ๋ง ์๊ฐํ๋ฉด ์ผ์์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ํฐ ๊ณณ์ด๋ผ๋ ๊ฒฐ๋ก ์ ๋๋ฌํ ์ ์๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - A์ B(Swift) (0) | 2022.11.06 |
---|---|
๋ฐฑ์ค - ์ปตํ๋(Swift) (0) | 2022.11.04 |
๋ฐฑ์ค - ๊ณตํญ(Swift) (0) | 2022.11.03 |
๋ฐฑ์ค - ํฌ๊ฒ ๋ง๋ค๊ธฐ(Swift) (0) | 2022.11.03 |
๋ฐฑ์ค - ๋นต์ง(Swift) (0) | 2022.11.01 |