와이유스토리

[이진 탐색] 프로그래머스 입국심사 Java 본문

코딩테스트/분할정복|이진탐색|투포인터

[이진 탐색] 프로그래머스 입국심사 Java

유(YOO) 2022. 1. 27. 11:21

 

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

 

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

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

programmers.co.kr

import java.util.*;

class Solution {
    public long solution(int n, int[] times) {
        long answer = Long.MAX_VALUE; // 최소 심사 시간
        
        long start, end, mid = 0, temp = 0; // temp 사람 수
        
        // 정렬
        Arrays.sort(times);
        start = 1;
        end = n * times[times.length-1];
        
        while(start<=end)
        {
            // n명 심사가 가능한지 궁금한 시간
            mid = (start+end)/2;
            temp=0;
            
            for(int i=0; i<times.length; i++)
            {
                // 사람 수
                temp += mid/times[i];
            }
            
            // 이미 확인한 mid => 더 작은 mid? end 줄임
            if(temp>=n)
            {
                answer = Math.min(answer, mid);
                end = mid - 1;
            }
            else // mid 불가능 => mid 큰 상황(start 올림)
            {
                start = mid + 1;
            }
        }

        return answer;
    }
}
Comments