[BOJ] 1654. 랜선자르기
15 Apr 2026
Reading time ~1 minute
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int K = sc.nextInt();
int N = sc.nextInt();
int[] arr = new int [K];
int max = 0;
for(int i = 0; i < K; i++) {
arr[i] = sc.nextInt();
}
long left = 1l;
long right = (long) Integer.MAX_VALUE;
long answer = 0l;
while(left <= right) {
long mid = (left + right) / 2;
if(isOK(mid,arr,N)) {
answer = mid;
left = mid + 1;
} else {
right = mid - 1;
}
}
System.out.println(answer);
}
public static boolean isOK(long mid, int[] arr, long N) {
long sum = 0;
for(int i = 0; i < arr.length; i++) {
sum += arr[i]/mid;
if(sum >= N) return true;
}
return false;
}
}