Algorithm/백준 알고리즘
백준_2212 센서(자바) / 그리디 알고리즘
미스터로즈
2021. 10. 19. 09:37
시간&메모리 제한
문제
입력&출력
문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
public class Back_2212 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int K = Integer.parseInt(br.readLine());
ArrayList<Integer> arr = new ArrayList<Integer>();
int[] dif = new int[N-1];
int ans=0;
if(K>=N) {
System.out.println(0);
return;
}
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i <N; i++) {
arr.add(Integer.parseInt(st.nextToken()));
}
Collections.sort(arr);
for(int i = 0 ; i < N-1;i++) {
dif[i] = arr.get(i+1)-arr.get(i);
}
Arrays.sort(dif);
for(int i = 0 ; i < N-K;i++) {
ans+=dif[i];
}
System.out.println(ans);
}
}
※ 내 생각
이 문제는 그룹을 짓는 문제입니다.
해결하기 위해서는 위치별, 거리별 정렬이 필요했습니다.
먼저 처음에 K개의 집중국이 센서보다 많으면 0을 출력하고 끝이 납니다.
집중국에서 각각의 센서를 수용할 수 있기 때문입니다.
N-K만큼 뺀 만큼의 차이 즉 차이가 너무 큰 나머지를 빼고 계산해주면 됩니다.