프로그래머스 LEVEL 3(입국심사)

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2022-10-21

  • 해결 방법 :
    • 이진 탐색을 위해 시작점을 0, 끝점을 최대 시간으로 초기화
    • 이진 탐색을 수행하며 mid 시간동안 계산할 수 있는 사람 수를 count에 증가
    • count 값이 n보다 작다면 시간을 더 늘려야 하므로 start를 mid + 1로 설정 (mid의 right 탐색)
    • 크거나 같다면 중간값 저장 및 end를 mid - 1로 설정 (mid의 left 탐색)
  • 회고 :
    • x
  • 코드

    function solution(n, times) {
        let answer = 0;
        let start = 0, end = Math.max(...times) * n;
            
        while (start <= end) {
            let count = 0;
            let mid = parseInt((start + end) / 2);
                
            for (const time of times) {
                if (time <= mid) count += parseInt(mid / time); 
            }
            if (count < n) start = mid + 1;
            else {
                answer = mid;
                end = mid - 1;
            }
        }
            
        return answer;
    }
    
  • 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges