문제: 센서
분류: 그리디 알고리즘, 정렬
난이도: 골드5
우선 밀접해 있는 센서들 간의 거리를 구해야 한다.
그 후 가까운 센서들을 묶어서 각 묶음 당 하나의 집중국을 세워야 한다.
아래는 문제에서 주어진 예제 입력 2의 정렬 결과를 그림으로 표현한 것이다.

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
const input = fs.readFileSync(filePath).toString().trim().split("\n");
const solution = (input) => {
const N = +input[0]; // 센서의 개수
const K = +input[1]; // 집중국의 개수
const sensor = input[2].split(" ").map(Number);
const dist = [];
// 센서 좌표를 오름차순으로 정렬한다.
sensor.sort((a, b) => a - b);
// 밀접한 두 센서 사이의 거리들을 구한다.
for (let i = 0; i < N - 1; i++) dist.push(sensor[i + 1] - sensor[i]);
// 수신 가능 영역의 길이의 합을 최소화해야 하므로 거리를 오름차순 정렬한다.
dist.sort((a, b) => a - b);
// 수신 받아야 하는 개수 = 센서의 개수 - 집중국의 개수
// 정렬한 거리의 상위 N-K개의 합이 정답이 된다.
let answer = dist.slice(0, N - K).reduce((prev, curr) => prev + curr, 0);
console.log(answer);
};
solution(input);