Dev.baelanche

[백준 2110] 공유기 설치 본문

Data Structure & Algorithm/PS - JAVA

[백준 2110] 공유기 설치

baelanche 2019. 5. 15. 23:18
반응형

 

이분 탐색으로 구현했다.

1. 임의 변수 mid 를 최대 거리로 사용했다.

2. 최대한 많은 곳에서 사용하려면 그리디한 방법으로 구현해야 한다.

2-1. 따라서 제일 좌측 집에는 반드시 설치한다.

3. mid 거리마다 거리가 일치하거나 가장 좌측 가까이 있는 집에 설치한다.

4. 카운트를 비교하여 left, right 를 조정한다.

 

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int c = sc.nextInt();
        int a[] = new int[n];
        for(int i=0; i<n; i++)
            a[i] = sc.nextInt();
        
        Arrays.sort(a);
        int left = a[0];
        int right = a[n-1] - a[0];
        while(left <= right) {
            int mid = (left + right)/2;
            int prev = a[0];
            int cnt = 1;
            for(int i=1; i<n; i++) {
                int distance = a[i] - prev;
                if(mid <= distance) {
                    cnt++;
                    prev = a[i];
                }
            }
            if(cnt >= c) left = mid + 1;
            else right = mid - 1;
        }
        System.out.println(left - 1);
    }
}
반응형

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

[백준 15732] 도토리 숨기기  (0) 2019.05.15
[백준 16434] 드래곤 앤 던전  (0) 2019.05.15
[백준 6236] 용돈 관리  (0) 2019.05.13
[백준 2343] 기타 레슨  (0) 2019.05.13
[백준 13015] 별 찍기 - 23  (0) 2019.05.13
Comments