예제로 나온 값을 확인해보면 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보다 크거나 같을 때 갱신해주면 된다.