hsskey / algorithm-practice

🧑‍💻 Solving algorithms to level up
0 stars 0 forks source link

입국심사 #30

Open hsskey opened 1 week ago

hsskey commented 1 week ago

입국심사

📝 제약조건

💡 예시

문제 해결 과정

Step 1: 문제 이해하기

Step 2: 접근 방법

Step 3: 코드 설계

  1. 최소/최대 시간 설정
  2. 이진 탐색으로 시간 탐색
  3. 주어진 시간에 처리 가능한 인원 계산하는 함수 구현
  4. 결과값 도출

Step 4: 코드 구현

function solution(n, times) {
    // 최소 시간과 최대 시간 설정
    let start = 1;
    let end = Math.max(...times) * n;

    // 주어진 시간(mid)동안 처리할 수 있는 입국자 수 계산 함수
    const getPossibleCount = (mid) => {
        return times.reduce((acc, time) => acc + Math.floor(mid / time), 0);
    };

    // 이진 탐색
    while (start < end) {
        const mid = Math.floor((start + end) / 2);
        const possibleCount = getPossibleCount(mid);

        // 처리할 수 있는 인원이 n보다 크거나 같으면 시간을 줄여본다
        if(possibleCount >= n) {
            end = mid;
        } else {
        // 처리할 수 있는 인원이 n보다 작으면 시간을 늘린다
            start = mid + 1    
        }
    }

    return start;
}

// 테스트
console.log(solution(6, [7, 10])); // 28
hsskey commented 1 week ago

image

hsskey commented 1 week ago

image

hsskey commented 1 week ago

image