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

Titu·2021년 11월 24일
0

Algorithm

목록 보기
18/28

프로그래머스 입국심사

유형

  • 이분탐색(Binary Search)

코드

import java.util.Arrays;

class Solution {
    public long solution(int n, int[] times) {
        // 최소 시간부터 최대 시간의 범위를 설정
        long start = 1;
        long end = (long) n * Arrays.stream(times).max().getAsInt();

        long answer = 0;
        while(start <= end) {
            long mid = (start + end) / 2;

            long people = 0;
            // 해당 시간동안 처리할 수 있는 사람의 수는 시간 / 각 심사관이 한 명을 처리하는데 걸리는 시간을 더한 값
            for (int time : times) {
                people += mid / time;
            }

            // 처리해야 하는 사람이 처리할 수 있는 사람보다 많은 경우에는 총 시간을 늘린다
            if(n > people) {
                start = mid + 1;
            }
            // 처리해야 하는 사람이 처리할 수 있는 사람보다 같거나 적은 경우에는 총 시간을 줄인다.
            else {
                end = mid - 1;
                answer = mid;
            }
        }

        return answer;
    }
}
profile
This is titu

0개의 댓글