문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
당신은 제품 관리자로서 현재 신제품 개발을 위해 팀을 이끌고 있다. 안타깝게도 최신 버전의 제품이 품질 검사를 통과하지 못했다. 각 버전이 이전 버전을 기반으로 개발되었기 때문에, 불량 버전 이후의 모든 버전도 불량이다.
n개의 버전 [1, 2, ..., n]이 있고 첫 번째 나쁜 버전을 찾아내고 싶어한다고 가정하자. 그러면 이후의 모든 버전도 나쁜 버전이 된다.
버전이 잘못되었는지 여부를 반환하는 API bool isBadVersion(version)이 주어진다. 첫 번째 잘못된 버전을 찾는 함수를 구현해라. API 호출 횟수를 최소화 해야한다.
#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
/* 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;
}
}