> 문제
문제 : [입국심사]
> 문제풀이
이진탐색으로 풀었다.
class Solution {
static public long solution(int n, int[] times) {
long left = 0;
long right = Long.MAX_VALUE;
long mid = 0;
while(left <= right){
mid = (left+right)/2;
if(check(n,mid,times)){
right = mid - 1;
}else left = mid + 1;
}
return right + 1;
}
static boolean check(int n, long time, int[] times){
long tmp = 0;
for(int i=0; i<times.length; i++){
tmp += time/times[i];
if(tmp>=n) return true;
}
return tmp>=n;
}
}
문제 출처 : Programmers