[Programmers] - 입국심사

문제

이진탐색 문제 풀어보기.

코드

import java.util.*;

class Solution {
    public long solution(int n, int[] times) {
        long answer = 0;
        long left = 0;
        long mid = 0;
        Arrays.sort(times);
        long right = (long)n * times[times.length - 1];

        while(left <= right){
            mid = (left + right) / 2;
            long sum = 0;

            for(int i=0;i<times.length;i++){
                sum += mid / times[i];
            }

            if(sum < n){//심사를 다못할 경우,시간 부족
                left = mid + 1;    
            }
            else{
                right = mid -1;
                answer = mid;
            }
        }
        return answer;
    }
}

코드 설명

이진탐색은 재귀로 풀지않고 반복으로 풀었다.

주어진 시간을 기준으로 이진탐색을 했다.

캐스팅을 안하면 틀린다.

요약

  • 이진탐색 응용하기