그리디 알고리즘, 정렬을 사용했다.
-> 예를 들어 예제 입력으로 보면 각각
값들은 1,3,5,6,10
각각 값들의 차는 2,2,1,4
정렬하면 1,2,2,4
N-K는 5-3 = 2.
가장 낮은 값부터 차례대로 2번 더해주면 1+2 = 3
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb=new StringBuilder();
StringTokenizer st;
st=new StringTokenizer(br.readLine());
int N=Integer.parseInt(st.nextToken());
int K=Integer.parseInt(st.nextToken());
st=new StringTokenizer(br.readLine());
int arr[]=new int[N];
for(int i=0;i<arr.length;i++)
arr[i]=Integer.parseInt(st.nextToken());
int diff[]=new int[arr.length-1];
for(int i=0;i<diff.length;i++) {
diff[i]=arr[i+1]-arr[i];
}
Arrays.sort(diff);
int sum=0;
for(int i=0;i<N-K;i++) {
sum+=diff[i];
}
System.out.println(sum);
}
}
1달 전에 풀려다가 못풀어서 다른 사람 풀이보고 풀었었는데
오늘 다시 풀었을 때는 금방 풀었다 !
내가 더 잘해진 걸까
문제 유형을 기억하고 있어서 금방 푼 걸까
문제가 쉬워 보인다.
하루에 백준 1문제 이상 푸는 것을 목표로 하고있다.
https://solved.ac/profile/anwlro0212