[스위프트][백준 2212][💛골드 5] 센서 (그리디)
Categories: BOJ
Tags: Algorithm Coding Test Swift PS
🧞♂️ 난이도
💛 골드 5
🧞♂️ 문제
센서
🧞♂️ 내 풀이
이 문제는 처음 봤을때 공유기설치 문제랑 비슷하다고 느껴서 바로 파라메트릭 서치로 풀 생각했다.
그게 아니고, 그리디하게 풀어야된다.
- 각 센서 간의 거리를 구하고,
- 그걸 내림차순으로 정렬시켜서
- K 만큼 앞에서 없애주고
- 합을 구하면 된다
🧞♂️ 후기
그리디 문제가 연습이 더 필요한것 같다..뭔가 그리디하게 생각하는 법을 머리가 자연스럽게 못하는것 같다. 에이 그렇게하면 당연히 안되겠지라는 풀이법이 보통 되는게 그리디 문제 같다.
🧞♂️ 스위프트 코드
import Foundation
let N = Int(readLine()!)!
let K = Int(readLine()!)!
var nums = readLine()!.split(separator: " ").compactMap{Int($0)}
if K >= N {
print(0)
exit(0)
}
nums.sort()
var distances: [Int] = []
for i in 1..<nums.count {
distances.append(nums[i] - nums[i-1])
}
distances.sort { $0 > $1 }
for _ in 0..<K-1 {
distances.removeFirst()
}
print(distances.reduce(0, +))