입국심사

eunseo·2021년 7월 18일
0

Programmers

목록 보기
11/14
post-thumbnail
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값을 찾는다.

profile
backend developer

0개의 댓글

관련 채용 정보