백준 1654: 랜선 자르기

uni.gy·2023년 12월 7일
0

알고리즘

목록 보기
29/61

문제

풀이

l=1 , r= 가장 긴 랜선 길이로 이분탐색 진행해서 만들 수 있는 랜선 개수를 확인한다.
n 이상이면 l=mid+1 미만이면 r=mid-1


코드

import java.io.*;
import java.util.*;

public class Main {


    public static void main(String[] args) throws IOException {
//        System.out.println(new Solution().solution(names, fees));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        st=new StringTokenizer(br.readLine());
        int k=Integer.parseInt(st.nextToken());
        int n=Integer.parseInt(st.nextToken());
        int[] arr=new int[k];
        int max=0;
        for(int i=0;i<k;i++){
            arr[i]=Integer.parseInt(br.readLine());
            max= Math.max(max, arr[i]);
        }
        long l=1,r=max;
        long ans=0;
        while(l<=r){
            long mid=(l+r)>>1;
            long cnt=0;
            for(int i=0;i<k;i++)cnt+=arr[i]/mid;
            if(cnt>=n){
                ans=mid;
                l=mid+1;
            }
            else r=mid-1;
        }
        System.out.println(ans);

    }

}

#이분탐색

profile
한결같이

0개의 댓글