function solution(n, times) {
times.sort((a, b) => a - b);
let min_time = 1,
max_time = n * times[times.length - 1],
mid,
peopleSumEachCase;
while (min_time <= max_time) {
mid = Math.floor((max_time + min_time) / 2);
peopleSumEachCase = 0;
for (let time of times) {
peopleSumEachCase += Math.floor(mid / time);
}
if (peopleSumEachCase >= n) {
max_time = mid - 1;
} else {
min_time = mid + 1;
}
}
return max_time+1;
}
그냥 느낌으로 돌려봤더니 왜 맞았지... 이진탐색 자체가 어려운 건 아닌데 logic을 다시 따져보자~
'온라인 저지 > 프로그래머스' 카테고리의 다른 글
[PGS/Java] 타겟 넘버 (0) | 2022.02.18 |
---|---|
[PGS/Python] 가장 큰 수 (0) | 2021.11.06 |
댓글