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

bepyan·2021년 4월 21일
1

알고리즘

목록 보기
5/16

문제 링크

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

코드

이진탐색을 어떻게 적용하지 감이 잘 안왔다..

배열을 순회하며 탐색하는 것이 아니라
정답 ( 주어진 시간에 최대 심사할 수 있는 인원수 )를 탐색해야 한다.

주의할 점은 r = m - 1 이 아니라 r = m 이다.


function solution(n, times) {
    var l = 0, r = Math.max(...times) * n;
    while (l < r) {
        const m = Math.floor((l + r) / 2);
        const pass = times.reduce((ac, v) => ac + Math.floor(m / v), 0);
        if (pass < n) 
            l = m + 1;
        else 
            r = m;
    }
    return l;
}
profile
쿠키 공장 이전 중 🚛 쿠키 나누는 것을 좋아해요.

0개의 댓글