문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
우리는 추측 게임을 하고 있다. 게임 방법은 다음과 같다.
나는 1부터 n까지 숫자 중 하나를 고른다. 당신은 내가 어떤 숫자를 골랐는지 맞춰야 한다(내가 고른 숫자는 게임이 진행되는 동안 유지된다).
당신이 틀릴 때마다, 내가 고른 숫자가 당신이 예상한 숫자보다 높은지 낮은지 알려준다.
미리 정의된 API intguess(int num)을 호출하면 세 가지 가능한 겨로가가 반환된다.
내가 고른 숫자를 반환해라.
#1
Input: n = 10, pick = 6
Output: 6
#2
Input: n = 1, pick = 1
Output: 1
#3
Input: n = 2, pick 1
Output: 1
/**
* Forward declaration of guess API.
* @param num your guess
* @return -1 if num is higher than the picked number
* 1 if num is lower than the picked number
* otherwise return 0
* int guess(int num);
*/
public class Solution extends GuessGame {
public int guessNumber(int n) {
int low = 1;
int high = n;
while(low <= high){
int mid = low + (high - low) / 2;
if(guess(mid) == -1) high = mid - 1;
else if(guess(mid) == 1) low = mid + 1;
else return mid;
}
return n;
}
}