프로그래머스 LEVEL 3(입국심사)
-
사용 언어 : javascript
-
해결 날짜 : 2022-10-21
- 해결 방법 :
- 이진 탐색을 위해 시작점을 0, 끝점을 최대 시간으로 초기화
- 이진 탐색을 수행하며 mid 시간동안 계산할 수 있는 사람 수를 count에 증가
- count 값이 n보다 작다면 시간을 더 늘려야 하므로 start를 mid + 1로 설정 (mid의 right 탐색)
- 크거나 같다면 중간값 저장 및 end를 mid - 1로 설정 (mid의 left 탐색)
- 회고 :
- x
-
코드
function solution(n, times) { let answer = 0; let start = 0, end = Math.max(...times) * n; while (start <= end) { let count = 0; let mid = parseInt((start + end) / 2); for (const time of times) { if (time <= mid) count += parseInt(mid / time); } if (count < n) start = mid + 1; else { answer = mid; end = mid - 1; } } return answer; }
- 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges