코딩테스트 연습 - 입국심사

n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한

programmers.co.kr

 

 


 

  • 풀이

 

이분 탐색으로 풀었다.

 

이분 탐색은 start, end를 두고 mid값으로 target을 찾는 알고리즘이다.

 

이번 문제에서 mid는 걸리는 시간, target은 입국 심사를 기다리는 n명의 사람이다.

 

 

 

  • 코드

 

import java.util.*;

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

+ Recent posts