CodingTest/LeetCode

[LeetCode] 374. Guess Number Higher or Lower, Easy

뜸부깅 2025. 4. 30. 12:54
반응형

1. 문제

  • 정수 n이 주어질 때, 임의의 선택된 값을 찾아라.
  • 사전 정의된 guess() 함수는 인자로 전달된 값에 따라 아래 결과를 반환한다.
    • 선택된 값보다 큰 경우, -1
    • 선택된 값보다 작은 경우, 1
    • 선택된 값을 찾은 경우, 0

2. 해결

/** 
 * Forward declaration of guess API.
 * @param {number} 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
 * var guess = function(num) {}
 */


function guessNumber(n: number): number {
    let left = 1, right = n;

    while(left <= right) {
        const mid = Math.floor((left + right)/ 2);
        const res = guess(mid);

        if(res === 1) left = mid + 1;
        else if(res === -1) right = mid - 1;
        else return mid;
    }

    return -1;
};
  • 이진 탐색을 통해 찾으면 된다.
  • 이진 탐색은 정렬된 상태에서 사용할 수 있고, 중간 값을 찾아 범위를 좁혀나가는 방식.