[LeetCode] First Bad Version

아르당·2025년 12월 3일

LeetCode

목록 보기
65/68
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

당신은 제품 관리자로서 현재 신제품 개발을 위해 팀을 이끌고 있다. 안타깝게도 최신 버전의 제품이 품질 검사를 통과하지 못했다. 각 버전이 이전 버전을 기반으로 개발되었기 때문에, 불량 버전 이후의 모든 버전도 불량이다.

n개의 버전 [1, 2, ..., n]이 있고 첫 번째 나쁜 버전을 찾아내고 싶어한다고 가정하자. 그러면 이후의 모든 버전도 나쁜 버전이 된다.

버전이 잘못되었는지 여부를 반환하는 API bool isBadVersion(version)이 주어진다. 첫 번째 잘못된 버전을 찾는 함수를 구현해라. API 호출 횟수를 최소화 해야한다.

Example

#1
Input: n = 5, bad = 4
Output: 4
Explanation:
call isBadVersion(3) -> false
call isBadVersion(5) -> true
call isBadVersion(4) -> true
그러면 4가 처음으로 나쁜 버전이다.

#2
Input: n = 1, bad = 1
Output: 1

Constraints

  • 1 <= bad <= n <= 2^31 - 1

Solved

/* The isBadVersion API is defined in the parent class VersionControl.
      boolean isBadVersion(int version); */

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        int left = 1;
        int right = n;

        while(left <= right){
            int mid = left + (right - left) / 2;
            
            if(!isBadVersion(mid)){
                left = mid + 1;
            }else{
                right = mid - 1;
            }
        }

        return left;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글