본문 바로가기

알고리즘/프로그래머스

[프로그래머스] 입국심사 / JAVA

문제링크 : https://programmers.co.kr/learn/courses/30/lessons/43238

 

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

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

programmers.co.kr

import java.util.*;
import java.io.*;
class Solution {
    public long solution(int n, int[] times) {
        long left = 0;
        long right = 0;
        long ans = 0;
        for(int i=0;i<times.length;i++){
            if(right < times[i]){
                right = times[i];
            }
        }
        right *= n;
        while(left<=right){
            long mid = (left+right)/2;
            long availNum = 0;
            for(int i=0;i<times.length;i++){
                availNum += mid/times[i];
                if(availNum>=n) break;
            }   
            if(availNum>=n){
                ans = mid;
                right = mid-1;
            }else{
                left = mid + 1;
            }
        }
        return ans;
    }
}