본문 바로가기

프로그래머스 - JAVA

코딩테스트 연습 > 이분탐색 > 입국심사

이전 코드

import java.util.*;

class Solution {
    public long solution(int n, int[] times) {
        long answer = Long.MAX_VALUE;
        Arrays.sort(times);
        
        long start = 0;
        long mid;
        long end = Long.MAX_VALUE;
        
        long sum;
        
        while (start <= end){
            mid = (start + end)/2;
            sum = 0;
            for (int i = 0 ; i < times.length ; i++){
                sum += mid/times[i];
                if (sum >= n){
                    break;
                }
            }
            
            if (sum < n){
                start = mid + 1;
            } else {
                end = mid - 1;
                answer = Math.min(answer, mid);
            }
        }
        
        return answer;
    }
}

최신 코드

import java.util.*;

class Solution {
    public long solution(int n, int[] times) {
        long answer = Long.MAX_VALUE;
        long start, end, mid;
        Arrays.sort(times);
        start = 0;
        end = Long.MAX_VALUE;
        
        long sum;
        while (start <= end){
            sum = 0;
            mid = (start + end) / 2;
            for (int i = 0 ; i < times.length ; i++){
                sum += mid / times[i];
                if (sum >= n){
                    break;
                }
            }
            
            if (sum < n){
                start = mid + 1;
            } else {
                end = mid - 1;
                answer = Math.min(answer, mid);
            }
        }
        return answer;
    }
}