# 분류 : 이진 탐색
# 최대 랜선 길이를 찾는 것이므로, count가 조건과 같다고 return 하여 문제를 접근하였으나 틀렸고 Count를 맞춰도 최대 길이를 찾아야 하기 때문에 추가적으로 left = Middle + 1 로 주어 진행하여야 한다. 단위가 크므로 long 타입을 쓰지 않으면 틀림
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int K = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
int arr[] = new int[K];
for(int i=0; i<K; i++)
arr[i] = Integer.parseInt(br.readLine());
Arrays.sort(arr);
long left = 1;
long right = arr[K-1];
long middle=0;
while(left<=right) {
long cnt=0;
middle = (left+right)/2;
for(int i=0; i<K; i++) {
cnt+= arr[i]/middle;
}
if(cnt < N) {
right = middle-1;
}else if(cnt >= N) {
left = middle+1;
}
}
System.out.println(right);
}
}
'백준' 카테고리의 다른 글
#백준_11404 플로이드 - Java (0) | 2020.01.11 |
---|---|
백준_11657 타임머신 - Java 자바 (출력초과 수정완료) (0) | 2020.01.11 |
#백준_2805 나무 자르기 - Java (0) | 2020.01.11 |
#백준_1992 쿼드트리 - Java (0) | 2020.01.11 |
#백준_11729 하노이 탑 이동 순서 - Java (0) | 2020.01.11 |