Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

374. Guess Number Higher or Lower (숫자가 높은지 낮은지 추측하기) C# 본문

코딩 테스트/LeetCode

374. Guess Number Higher or Lower (숫자가 높은지 낮은지 추측하기) C#

포카리tea 2022. 11. 22. 14:08

We are playing the Guess Game. The game is as follows:

I pick a number from 1 to n. You have to guess which number I picked.

Every time you guess wrong, I will tell you whether the number I picked is higher or lower than your guess.

You call a pre-defined API int guess(int num), which returns three possible results:

  • -1: Your guess is higher than the number I picked (i.e. num > pick).
  • 1: Your guess is lower than the number I picked (i.e. num < pick).
  • 0: your guess is equal to the number I picked (i.e. num == pick).

Return the number that I picked.

 

우리는 추측 게임을 하고 있습니다. 게임은 다음과 같습니다.

제가 1에서 n까지의 숫자 중 하나를 선택합니다. 당신은 제가 선택한 숫자를 추측해야 합니다.

당신이 틀릴 때마다 내가 선택한 숫자가 당신의 추측보다 높은지 낮은지 알려줄 것입니다.

  • -1: 당신의 추측이 제가 선택한 숫자보다 높습니다(즉, num > pick).
  • 1: 당신의 추측이 제가 선택한 숫자보다 낮습니다(즉, num < pick).
  • 0: 당신의 추측이 제가 선택한 숫자와 같습니다(즉, num == pick).

제가 선택한 번호를 반환합니다.

예시 1:

입력: n = 10, pick = 6
출력: 6

예시 2:

입력: n = 1, pick = 1
출력: 1

예시 3:

입력: n = 2, pick = 1
출력: 1

 

조건:

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

정답:

public class Solution : GuessGame {
    public int GuessNumber(int n) {
        int mini = 0;
        int max = n;

        while(mini <= max)
        {
            int average = (mini + (max - mini) / 2);

            if(guess(average) == -1)
            {
                max = average - 1;
            }
            else if(guess(average) == 1)
            {
                mini = average + 1;
            }
            else
            {
                return average;
            }
        }

        return 0;
    }
}

해설: 

mini와 max의 절반값을 찾아 비교 후 더 이상 나눠지지 않아질때까지 반복해주었습니다.