Dev.baelanche

[백준 2212] 센서 본문

Data Structure & Algorithm/PS - JAVA

[백준 2212] 센서

baelanche 2019. 4. 22. 20:59
반응형

 

예제 1, 6, 9, 3, 6, 7 로 설명해보겠다. (집중국 개수 k=2)

1. 오름차순으로 정렬한다. (1, 3, 6, 6, 7, 9)

2. 새로운 배열 m을 만들어 각 센서 사이의 거리 정보를 담는다. (2, 3, 0, 1, 2)

3. m의 값 중 가장 큰 수를 뺀다. (필자는 0을 대입하는 방식으로 했다.)

4. 3번을 k-1 번 반복한다.

5. m배열의 모든 값을 더하여 출력한다.

 

 

채점 99% 에서 계속 런타임에러가 발생했는데,

n = 1 일때에 대한 예외가 발생해서였다. 아래 코드에서 n = 1이면 m 배열의 길이가 0이어서 예외처리를 해주었다.

마찬가지로 n <= k 일때도 조심해주면 되겠다.

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        int m[] = new int[n-1];
        
        for(int i=0; i<n; i++)
            a[i] = sc.nextInt();
        
        Arrays.sort(a);
        
        for(int i=1; i<n; i++)
            m[i-1] = a[i] - a[i-1];
        
        for(int i=0; i<k-1; i++) {
            int max = 0;
            int idx = 0;
            for(int j=0; j<n-1; j++) {
                if(max < m[j]) {
                    max = m[j];
                    idx = j;
                }
            }
            if(n != 1)
                m[idx] = 0;
        }
        
        int sum = 0;
        for(int i=0; i<n-1; i++)
            sum += m[i];
        
        System.out.println(sum);
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 11057] 오르막 수  (0) 2019.04.23
[백준 9251] LCS  (0) 2019.04.23
[백준 1969] DNA  (0) 2019.04.22
[백준 2217] 로프  (0) 2019.04.22
[백준 1700] 멀티탭 스케줄링  (0) 2019.04.22
Comments