99클럽 코테 스터디 15일차 TIL [프로그래머스] 입국심사 (Java)

민경·2024년 6월 10일

문제

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

풀이

이분 탐색(Binary Search)을 활용해 n명의 입국 심사를 가장 빨리 마치는 시간을 찾는 문제

  • 각 심사관이 주어진 시간 내에 처리할 수 있는 사람의 수를 계산한다.
  • 총 처리할 수 있는 사람이 n명 이상인지 확인하고, 이분 탐색 범위를 조정해 나가며 정답을 찾는다.

정답 코드

class Solution {
    public long solution(int n, int[] times) {
        long left = 1;
        long right = (long) times[times.length - 1] * n;
        long answer = right;
        
        while(left <= right) {
            long mid = (left + right) / 2;
            long sum = 0;
            for(int time : times) {
                sum += mid / time;
            }
            if(sum >= n) {
                answer = mid;
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        
        return answer;
    }
}
profile
강해져야지

0개의 댓글