문제에서 큰 값이 나올 수 있으면 long 사용 여부를 확인하자.
l
= 1, r
= long 최대 값으로 이진탐색m
만큼의 시간에 대해 가능여부 판별l
returnclass Solution {
int n;
int[] times;
public long solution(int n, int[] times) {
this.n = n;
this.times = times;
long l = 1;
long r = Long.MAX_VALUE;
long m;
while (l <= r) {
m = l + (r - l) / 2;
if (isPossible(m)) {
r = m - 1;
} else {
l = m + 1;
}
}
return l;
}
boolean isPossible(long limit) {
long num = 0;
for (int time : times) {
num += limit / time;
if (num >= n) {
return true;
}
}
return false;
}
}