입국심사 43238

PublicMinsu·2023년 1월 9일
0

문제

접근 방법

예제로 나온 값을 확인해보면 return을 7하고 10으로 나눠서 더하면 6인 것을 확인할 수 있다.
시간당 처리할 수 있는 사람 수를 합산하는 것이다.

코드

#include <vector>
using namespace std;
long long solution(int n, vector<int> times)
{
    long long answer, low = 0, high = 0, mid;
    for (int time : times)
        if (high < time)
            high = time;
    high *= n;
    while (low <= high)
    {
        long long sum = 0;
        mid = (low + high) / 2;
        for (int time : times)
            sum += (mid / time);
        if (sum >= n)
        {
            high = mid - 1;
            answer = mid;
        }
        else
            low = mid + 1;
    }
    return answer;
}

풀이

최솟값이므로 sum이 n보다 크거나 같을 때 갱신해주면 된다.

profile
연락 : publicminsu@naver.com

0개의 댓글