본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 입국심사(Java)

by hxxyeoniii 2025. 3. 17.

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/43238#qna

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 풀이

이분 탐색으로 풀이

import java.util.*;

class Solution {
    public long solution(int n, int[] times) {
        long answer = 0;
        
        Arrays.sort(times);
        
        long left = 0;
        long right = times[times.length - 1] * (long) n; // 모든 사람이 심사를 받는데 걸리는 시간 중 가장 오래 걸리는 시간
        
        while(left <= right) {
            long mid = (left+right) / 2;
            
            // 시간 mid동안 심사할 수 있는 사람 수 계산
            long num = 0;
            for(int i=0; i<times.length; i++) {
                num += mid / times[i];
            }

            if(num < n) {
                // 심사한 사람 수가 n보다 작으면 모든 사람을 검사하지 못함
                left = mid + 1;
            } else {
                // 더 최솟값을 향해
                right = mid - 1;
                answer =  mid;
            }
        }
        
        return answer;
    }
}