[Programmers] - 입국심사
문제
이진탐색 문제 풀어보기.
코드
import java.util.*;
class Solution {
public long solution(int n, int[] times) {
long answer = 0;
long left = 0;
long mid = 0;
Arrays.sort(times);
long right = (long)n * times[times.length - 1];
while(left <= right){
mid = (left + right) / 2;
long sum = 0;
for(int i=0;i<times.length;i++){
sum += mid / times[i];
}
if(sum < n){//심사를 다못할 경우,시간 부족
left = mid + 1;
}
else{
right = mid -1;
answer = mid;
}
}
return answer;
}
}
코드 설명
이진탐색은 재귀로 풀지않고 반복으로 풀었다.
주어진 시간을 기준으로 이진탐색을 했다.
캐스팅을 안하면 틀린다.
요약
- 이진탐색 응용하기