[프로그래머스] 코딩테스트 연습 - 이분탐색 Level 3 입국심사

Solution.java

class Solution {
    public long solution(int n, int[] times) {
        long answer = 0;
        
        long left = 0;
        long right = 1000000000000000000L;
        long mid;
        
        while (left <= right) {
            mid = (left + right) / 2;
            
            long tmp = 0;
            for (int time : times) {
                tmp += mid / time;
            }
            
            if (tmp < n) {
                left = mid + 1;
            }
            else {
                answer = mid;
                right = mid - 1;
            }
        }
        
        return answer;
    }
}

이분탐색을 이런식으로 쓸 수 있구나 싶었던 문제였다.

tmp값이 처음에 너무 크게 나올 수 있어서 실패하면 수정하려고했는데 그런 테스트 케이스는 없었던것같다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

좋은 웹페이지 즐겨찾기