import java.util.*;
class Solution {
public long solution(int n, int[] times) {
Arrays.sort(times);
long start = 0;
long end = (long)n*times[times.length-1];
return binarySearch(times, n, start, end);
}
public long binarySearch(int[]times,int n, long start, long end){
long answer =0;
while(start <= end){
long mid = (start+end)/2;
long sum=0;
for(int i=0; i<times.length; i++){
sum += mid/times[i];
}
if (sum < n) {
start = mid + 1;
} else {
end = mid - 1;
answer = mid;
}
}
return answer;
}
}
이분 탐색을 이용하면 된다. start=0 end = 최대 걸리는 시간으로 잡고 이분탐색을 시작하면 된다. sum이 n보다 작으면 입국심사를 하지 못한 사람이 있어서 start = mid+1로 한다. 만약 sum이 n보다 크거나 같으면 입국심사는 다 했으므로 시간을 최소로 하는 answer값을 찾는다.