function solution(n, times) {
let answer = 0;
const slowestTime = Math.max(...times); // 최악의 경우를 상정하기 위해 가장 느린 심사관의 소요시간 확인
let left = 0;
let right = n * slowestTime; // 최악의 경우 해당 시간만큼 걸림
// 이진 탐색
while(left <= right){
const mid = Math.floor((left + right) / 2); // left와 right의 중간값 설정
let sum = 0; // 심사할 인원
// 각 심사관 별로 주어진 시간(mid) 안에 심사할 수 있는 인원 sum
for(let item in times){
sum = sum + Math.floor(mid / times[item]);
}
if(sum < n){ // 심사 대상을 전부 처리하지 못한 경우
left = mid + 1;
} else{ // 심사 대상보다 많은 대상을 심사한 경우
right = mid - 1;
answer = mid;
}
}
return answer;
}
댓글남기기