[プログラマー]入国審査-javascript
📌 質問する
https://programmers.co.kr/learn/courses/30/lessons/43238
📌 に答える
function solution(n, times) {
var answer = Infinity;
times = times.sort((a, b) => a - b); // 오름차순 정렬
let left = 1;
let right = times[times.length - 1] * n;
// 이분탐색 시작
while (left <= right) {
let cnt = 0;
let mid = parseInt((left + right) / 2);
// 조건에 맞는 mid인지 검사
for (let i = 0; i < times.length; i++) {
cnt += parseInt(mid / times[i]);
}
if (cnt >= n) {
right = mid - 1;
answer = Math.min(answer, mid);
} else {
left = mid + 1;
}
}
return answer;
}
✔アルゴリズム:二分探索✔審査官ごとに所要時間の時間を昇順に並べ替える
✔left=1,right=全員が最長時間の審査官検査を受ける時間
✔二分探索を行い、midをtimes[i]の値の和で割ったのが現在のmid時間でチェックできる人数です.
✔人の数がnより多い場合は答えに合う条件ですが、答えより小さい場合は更新します
✔難易度:プログラマー標準LEVEL 3
Reference
この問題について([プログラマー]入国審査-javascript), 我々は、より多くの情報をここで見つけました https://velog.io/@ywc8851/프로그래머스-입국심사-javascript-5g7w4ih7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol