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

๋ฌธ์ œ

๋‚œ๋กœ๋ฅผ ๊ฐ€์žฅ ์กฐ๊ธˆ ํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

์˜ˆ์ œ๋ฅผ ๋ณด์ž

input
3 2
1
3
6

answer 4

ํ•ด๋‹น ์˜ˆ์ œ์—์„œ๋Š” 3๋ช…์˜ ์นœ๊ตฌ๊ฐ€ ์˜ค๊ณ , 2๊ฐœ์˜ ์„ฑ๋ƒฅ์ด ์žˆ๋‹ค.

1 2 3 4 5 6์ด ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, ์นœ๊ตฌ๋Š” Ti +1์‹œ๊ฐ„๊นŒ์ง€ ๊ตฌ์‚ฌ๊ณผ์˜ ๋ฐฉ์— ๋จธ๋ฌผ๊ธฐ ๋•Œ๋ฌธ์— 1, 2, 3, 4, 6, 7 ์—๋Š” ๋ฌด์กฐ๊ฑด ๋‚œ๋กœ๊ฐ€ ์ผœ์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 1์‹œ์— ํ‚ค๊ณ  4์‹œ์— ๋ˆ ๋‹ค์Œ, ๋‹ค์‹œ 6์‹œ์— ํ‚ค๋ฉด ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ตœ์†Œํ•œ์˜ ๋‚œ๋กœ๊ฐ€ ์ผœ์ ธ ์žˆ๋Š” ์‹œ๊ฐ„์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๋‹ค๋ฅธ ์นœ๊ตฌ๋“ค๊ณผ์˜ ๊ฐ„๊ฒฉ์ด ๊ธด ์นœ๊ตฌ๋“ค ๋จผ์ € ๋ฝ‘์•„๋‚ด์–ด ์–˜๋„ค๋งŒ ๋”ฐ๋กœ ๋‚œ๋กœ๋ฅผ ์ผœ์•ผ ํ•œ๋‹ค. ๊ฐ„๊ฒฉ์ด ๋„“์„ ์ˆ˜๋ก ์‹œ๊ฐ„์ด ๋” ๊ธธ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

const INPUT_FILE = process.platform === "linux" ? "/dev/stdin" : "./inputs.txt";
const inputs = require("fs")
  .readFileSync(INPUT_FILE)
  .toString()
  .trim()
  .split("\n");
 
let [n, k] = inputs[0].split(" ").map(Number);
const times = inputs.slice(1).map(Number);
 
const gaps = [];
let totalTime = times[n - 1] + 1 - times[0];
 
for (let i = 1; i < n; i++) {
  gaps.push(times[i] - times[i - 1] - 1);
}
 
gaps.sort((a, b) => b - a);
 
for (let i = 0; i < k - 1; i++) {
  totalTime -= gaps[i];
}
 
console.log(totalTime);

๋”ฐ๋ผ์„œ ๋งจ ์ฒ˜์Œ์—๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ•œ ๋ฒˆ๋„ ๋‚œ๋กœ๋ฅผ ์•ˆ ๊ป์„ ๋•Œ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์—์„œ ๊ฐ ์นœ๊ตฌ๋“ค๊ฐ„์˜ ์‹œ๊ฐ„์„ ๊ตฌํ•œ ๋‹ค์Œ์— ๋‹จ์ถ•๋˜๋Š” ๊ฐ„๊ฒฉ๋งŒํผ์„ ๋นผ์ฃผ๋ฉด ๋œ๋‹ค.