본문 바로가기

Language/JAVA

[JAVA][백준 2122][그리디 정렬] 센서 - 컴도리돌이

728x90

 

 

2212번: 센서

첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있

www.acmicpc.net


 

문제 설명은 밑에 링크를 타시고 보시면 됩니다.

😶‍🌫️

 

 

[Python][백준 2212][정렬][그리디] 센서 - 컴도리돌이

풀이과정 해당 문제는 좌표를 단순히 정렬시켜서 센서들 간의 거리를 저장하고 정렬하여 n-k까지 합을 구하면 된다. 여기서 n-k까지 합을 구하는 이유를 물어본다면,, 문제를 그리면서 푸는 것을

comdolidol-i.tistory.com

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int k = Integer.parseInt(br.readLine());
        int [] arr = new int [n];
        StringTokenizer st = new StringTokenizer(br.readLine()," ");

        for(int i=0; i< n ; i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }
        solution(n,k,arr);
    }

    public static void solution(int n, int k, int[] arr){
        Arrays.sort(arr);
        int [] newArr = new int [n-1];

        for(int i=0; i< n-1; i++){
            newArr[i] = arr[i+1] - arr[i];
        }

        Arrays.sort(newArr);

        int ans = 0;

        for(int i=0; i<n-k; i++){
            ans += newArr[i];
        }
        System.out.println(ans);
    }
}