😎풀이

  1. leftright 두개의 포인터를 정의하여 이진탐색 진행
  2. leftright보다 작을 경우 순회
    2-1. 중앙값 계산
    2-2. 중앙값이 잘못된 버전 이라면, 해당 버전이 잘못된 버전의 시발점인 경우를 염두하여 right에 대입
    2-3. 중앙값이 잘못된 버전이 아니라면, 해당 버전은 정상이므로 탐색 범위에서 제외하고 left에 +1하여 대입
  3. 탐색된 badVersion 반환
var solution = function(isBadVersion: any) {

    return function(n: number): number {
        let left = 1
        let right = n
        while(left < right) {
            const mid = Math.floor((left + right) / 2)
            if(isBadVersion(mid)) {
                right = mid
            } else {
                left = mid + 1
            }
        }
        return left
    };
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글