Dev.baelanche

[백준 1654] 랜선 자르기 본문

Data Structure & Algorithm/PS - JAVA

[백준 1654] 랜선 자르기

baelanche 2019. 5. 10. 20:36
반응형

 

 

기본적인 이분탐색에서 한번 꼬아낸 문제이다.

 

각 랜선의 길이 : L

나눌 단위 길이 : D

일때,

 

L / D 의 합이 K 를 만족하는 선에서 최대 길이를 구해야 한다.

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int k = sc.nextInt();
        int n = sc.nextInt();
        int a[] = new int[k];
        for(int i=0; i<k; i++)
            a[i] = sc.nextInt();
        long low = 0;
        long high = (1 << 31) - 1;
        while(low <= high) {
            long mid = (low + high)/2;
            int cnt = 0;
            for(int i=0; i<k; i++)
                cnt += a[i] / mid;
            if(cnt < n) high = mid - 1;
            else low = mid + 1;
        }
        System.out.println(high);
    }
}

 

코드는 정말 간단하다.

반응형

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

[백준 1120] 문자열  (0) 2019.05.11
[백준 2875] 대회 or 인턴  (0) 2019.05.11
[백준 2512] 예산  (0) 2019.05.10
[백준 2805] 나무 자르기  (0) 2019.05.10
[백준 2606] 바이러스  (0) 2019.05.10
Comments