
제한 사항을 보면 거의 1억이 넘는 수가 들어가 있다.
저번에서 봣듯이 1억이 넘으면 무조건 이분탐색이라는것을
캐치해야된다.
로직은 똑같았지만 , n 수가 나올때 return 해라 ! 해서 틀렸다. 우리가 구하는건 n 가 맞다. 하지만 n수가 나오는 경우는 여러개 이다.
예를들어 6 [7, 10] , 28(정답)
이지만 이분법을 돌리다보면 29 도 28도 똑같은 6을 배출한다. 이런 경우 작은 수를 구해야되기 때문에 math.min 수로 계[속 변경해야된다.
function solution(n, times) {
var answer = 0;
times.sort((a,b)=>a-b);
var max_time= times[times.length-1]*n;
var left=0;
var right= max_time;
var answer=right;
while(right>=left){
var mid= Math.floor( (left+ right)/2);
var sum_total=0;
times.map((el)=> sum_total+=Math.floor(mid/el));
if(sum_total>=n){
answer=Math.min(answer,mid);
right= mid-1;
}
else{
left=mid+1;
}
}
//여기까지 했는데 인되는 경우 하나씩 더할까..^^;;
return answer;
}
//solution(10,[6,8,10])