https://www.acmicpc.net/problem/2212
N๊ฐ์ ์ผ์๋ค ์ฌ์ด์ M๊ฐ์ ์ง์ค๊ตญ์ ์ค์นํ์ฌ M๊ฐ์ ์ง๋จ์ ๋ง๋ค์์ ๋ ๊ฐ๊ฐ ์ง์ค๊ตญ๋ค์ด ์ปค๋ฒํ๋ ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
ํ๋์ ์ง์ค๊ตญ๋ค์ด ์ปค๋ฒํ๋ ๊ฑฐ๋ฆฌ๋ ํด๋น ์ง์ค๊ตญ์ด ํฌํจ๋ ์งํฉ์ ์ผ์๋ค์ฌ์ด์ ๊ฑฐ๋ฆฌ์ ํฉ๊ณผ ๊ฐ๋ค๊ณ ํ ์ ์๋ค.
๊ทธ๋์ ์ง์ค๊ตญ๋ค์ด ์ปค๋ฒํ๋ ๊ฑฐ๋ฆฌ๊ฐ ์ต์๊ฐ ๋๋ ค๋ฉด ์ผ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๊ธด ๊ฑฐ๋ฆฌ๋ฅผ ๋๋์ด M๊ฐ์ ์งํฉ์ ๋ง๋ค๋ฉด ๋๋ค.
์ฆ, ์ผ์์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ์ฌ ์ ๋ ฌํ ํ ๊ฐ์ฅ ๊ธธ์ด๊ฐ ๊ธด M-1๊ฐ์ ๊ฐ์ 0์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๊ณ ์ผ์์ฌ์ด์ ๊ฑฐ๋ฆฌ์ ํฉ์ ๊ตฌํ๋ฉด ์ต์ข ๊ฒฐ๊ณผ๊ฐ ๋๋ค.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int M = Integer.parseInt(br.readLine());
// ์ผ์๋ณด๋ค ์ง์ค๊ตญ์ด ๋ ๋ง์ ๊ฒฝ์ฐ ๊ฑฐ๋ฆฌ๋ 0
if (M >= N) {
System.out.println(0);
System.exit(0);
}
int[] sensor = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i=0; i<N; i++) {
sensor[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(sensor);
// sensor์ฌ์ด์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ
Integer[] sensorDistance = new Integer[N-1]; // sensor์ฌ์ด์ ๊ฑฐ๋ฆฌ
for (int i=0; i<N-1; i++) {
sensorDistance[i] = sensor[i+1] - sensor[i];
}
Arrays.sort(sensorDistance, Collections.reverseOrder());
// ๊ฐ์ฅ ๊ธด ๊ฑฐ๋ฆฌ M-1๊ฐ๋ฅผ 0์ผ๋ก ์ด๊ธฐํ(ํด๋น ์์น์ ๊ธฐ์ง๊ตญ์ ์ค์นํ๊ธฐ ๋๋ฌธ)
for (int i=0; i<M-1; i++) {
sensorDistance[i] = 0;
}
// ์ต์ข
๊ธธ์ด ๊ตฌํ๊ธฐ
int result = 0;
for (int i=0; i<N-1; i++) {
result += sensorDistance[i];
}
System.out.println(result);
}
}