PS/PS Log

23.09.25. 풀었던 문제들

hyelie 2023. 9. 25. 16:01

Programmers Lv. 3 입국심사, 8분

 parametric search.

typedef long long ll;

vector<int> times;

// t시간동안 심사할 수 있는 인원 수
ll calculateNumPass(ll t){
    ll num_pass = 0;
    for(int time : times){
        num_pass += ((ll) t / time);
    }
    return num_pass;
}

long long solution(int n, vector<int> t) {
    ll start = 0, end = 1e18;
    times = t;

    while(start < end){
        ll mid = (start + end) / 2;
        ll num_pass = calculateNumPass(mid);
        if(num_pass >= n){ // 시간을 더 줄일 수 있을 때
            end = mid;
        }
        else{ // 시간을 늘려야 할 때
            start = mid + 1;
        }
    }

    return start;
}

 

시간복잡도

 O(nlogn)