import java.util.Arrays;
class Solution {
public long solution(int n, int[] times) {
// 최소 시간부터 최대 시간의 범위를 설정
long start = 1;
long end = (long) n * Arrays.stream(times).max().getAsInt();
long answer = 0;
while(start <= end) {
long mid = (start + end) / 2;
long people = 0;
// 해당 시간동안 처리할 수 있는 사람의 수는 시간 / 각 심사관이 한 명을 처리하는데 걸리는 시간을 더한 값
for (int time : times) {
people += mid / time;
}
// 처리해야 하는 사람이 처리할 수 있는 사람보다 많은 경우에는 총 시간을 늘린다
if(n > people) {
start = mid + 1;
}
// 처리해야 하는 사람이 처리할 수 있는 사람보다 같거나 적은 경우에는 총 시간을 줄인다.
else {
end = mid - 1;
answer = mid;
}
}
return answer;
}
}