시간&메모리 제한
문제
입력&출력
문제풀이
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만큼 뺀 만큼의 차이 즉 차이가 너무 큰 나머지를 빼고 계산해주면 됩니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_1916 최소비용 구하기(자바) / 다익스트라 (0) | 2021.10.26 |
---|---|
백준_2206 벽 부수고 이동하기(자바) / BFS (0) | 2021.10.24 |
백준_12904 A와 B (자바) / 문자열 (0) | 2021.10.18 |
백준_2579 계단 오르기(자바) / DP (0) | 2021.10.14 |
백준_11723 집합(자바) / 구현 (0) | 2021.10.08 |