백준공부/java

[백준] 1654번 랜선 자르기 (silver 2

gomduri43 2023. 10. 16. 17:19

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


public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int k=Integer.valueOf(st.nextToken());
        int n=Integer.valueOf(st.nextToken());
        ArrayList<Integer> arr=new ArrayList<>();
        int max=0;
        for(int i=0; i<k; i++){
            arr.add(Integer.valueOf(br.readLine()));
            max= max < arr.get(i) ? arr.get(i) :max;
        }

        int temp = 0;
        long s = 1;
        long e = max;
        long mid =0l;
        int answer = Integer.MIN_VALUE;

        while (s <= e) {
            mid = (s + e) / 2;
            temp = 0;
            for (int i = 0; i < k; i++) {
                temp += arr.get(i) / mid;
            }
            if (temp >= n) {
                answer = answer < mid ? (int)mid : answer;
            }
            if (temp >= n) {
                s = mid + 1;
            } else {
                e = mid - 1;

            }
        }

        bw.write(answer + "");

        bw.flush();
    }
}