프로그래머스 Level 3 - 입국심사
📌 문제 설명
📌 생각한 풀이 방법
- 범위의 시작인 start과 나올수 있는 최대 시간인 end를 설정한다.
- start와 end의 중간인 mid를 기준으로 조건을 만족하는 최소값을 찾는다.
2-1. 해당 mid에 조건을 만족하지 않으면 start를 증가시킨다.
2-2. 해당 mid에 조건을 만족하면 end를 감소시킨다.
- start와 end의 값이 같아질 때까지 과정 2를 반복한다.
📌 풀이
function solution(n, times) {
let start = 0;
let end = n * Math.max(...times);
while (start !== end) {
let mid = Math.floor((start + end) / 2);
let checkedNum = 0;
for (let i = 0; i < times.length; i++) {
checkedNum += Math.floor(mid / times[i]);
}
if (checkedNum >= n) {
end = mid;
} else {
start = mid + 1;
}
}
return start;
}