๋ฐฑ์ค€ - ์„ผ์„œ(Swift)

2022. 11. 4. 10:59ใ†Algorithm

๋ฐฑ์ค€ - ์„ผ์„œ(Swift)

 

 

 ๋ฌธ์ œ ์„ค๋ช…

 

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

 

2212๋ฒˆ: ์„ผ์„œ

์ฒซ์งธ ์ค„์— ์„ผ์„œ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10,000), ๋‘˜์งธ ์ค„์— ์ง‘์ค‘๊ตญ์˜ ๊ฐœ์ˆ˜ K(1 ≤ K ≤ 1000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์…‹์งธ ์ค„์—๋Š” N๊ฐœ์˜ ์„ผ์„œ์˜ ์ขŒํ‘œ๊ฐ€ ํ•œ ๊ฐœ์˜ ์ •์ˆ˜๋กœ N๊ฐœ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์ขŒํ‘œ ์‚ฌ์ด์—๋Š” ๋นˆ ์นธ์ด ํ•˜๋‚˜ ์žˆ

www.acmicpc.net

 

 ๋‚˜์˜ ํ’€์ด

 

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ๋‹ค.

๊ธฐ์ง€๊ตญ์„ ์–ด๋– ํ•œ ์ขŒํ‘œ์— ์„ค์น˜ํ•˜๊ณ  ์ปค๋ฒ„ํ•˜๋Š” ๋ฐฉ์‹์ธ ์ค„ ์•Œ์•˜๋Š”๋ฐ ๋‹ค๋ฅธ ๊ธ€๋“ค์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ตฌ๊ฐ„์„ ์ปค๋ฒ„ํ•œ๋‹ค๋Š” ๋ง์ด์—ˆ๋‹ค.

์‚ฌ์‹ค ์ง‘์ค‘๊ตญ์˜ ์ˆ˜์‹  ๊ฐ€๋Šฅ์˜์—ญ์€ ๊ณ ์†๋„๋กœ ์ƒ์—์„œ ์—ฐ๊ฒฐ๋œ ๊ตฌ๊ฐ„์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค๋Š” ๋ง์„ ๋ณด๊ณ  ์ง์ž‘์€ ํ–ˆ์œผ๋‚˜ ์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„์„œ ์ขŒํ‘œ๋กœ ์ƒ๊ฐํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

 

๊ทธ๋ž˜์„œ ์ด ๋ฌธ์ œ๋Š” ๊ทธ๋ฆฌ๋””ํ•˜๊ฒŒ ์ ‘๊ทผํ•ด์•ผํ•˜๋Š”๋ฐ, ๊ฐ ์„ผ์„œ๋“ค์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๊ฐ ์„ผ์„œ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ์ฐจ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋‘”๋‹ค.

 

๊ทธ๋Ÿผ ์„ผ์„œ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ์ฐจ๊ฐ€ ๋†’์€ ๊ฒƒ๋ถ€ํ„ฐ ์žˆ๊ฒŒ๋˜๋Š”๋ฐ ์ง‘์ค‘๊ตญ์˜ ๊ฐœ์ˆ˜-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, +))

 

 

 

 ํ”ผ๋“œ๋ฐฑ

 

์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ๋…ธํŠธ์— ์ด๊ฒƒ์ €๊ฒƒ ์ ์–ด๋ณด๋ฉด์„œ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. 

๊ฐ ์ง‘์ค‘๊ตญ์˜ ์ˆ˜์‹ ๊ฑฐ๋ฆฌ๊ฐ€ ์ตœ์†Œ๊ฐ’์ด ๋˜๊ธฐ์œ„ํ•ด์„œ๋Š” ์ง‘์ค‘๊ตญ์ด ์–ด๋Š ๊ตฌ๊ฐ„์„ ๊ธฐ์ ์œผ๋กœ ๋‚˜๋ˆ ์ ธ์•ผํ•˜๋Š”์ง€๊ฐ€ ํ•ต์‹ฌ์ด๋ฉฐ ์ด๋Š” ์กฐ๊ธˆ๋งŒ ์ƒ๊ฐํ•˜๋ฉด ์„ผ์„œ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ณณ์ด๋ผ๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.