너지살 2022. 4. 11. 01:09

https://programmers.co.kr/learn/courses/30/lessons/43238

 

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

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

programmers.co.kr

 

문제풀이

이분탐색을 활용해 심사에 걸리는 시간을 최소로 한다.

 

 

소스코드

/*
이분탐색
가장 작은 경우, 가장 큰 경우 설정 / start, end
mid 관한 알고리즘 구현
검증 작업 if에 작을 때 else에 클 때, 정답 적용
*/

import java.util.*;


class Solution {
    public long solution(int n, int[] times) {
        long answer = 0;
        
        Arrays.sort(times);
        
        long start = 0;
        long end = times[times.length - 1] * (long)n;
       
        
        while(start <= end)
        {
            long mid = (start + end)/2;
            
            long count = 0;
            
            for(int one : times)
            {
                count += mid / one;
            }
            
            if (count < n)
            {
                start = mid + 1;
            }
            else
            {
                end = mid - 1;
                answer = mid;
            }
        }
        
        
        return answer;
    }
}