개발 일지
374. Guess Number Higher or Lower (숫자가 높은지 낮은지 추측하기) C# 본문
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의 절반값을 찾아 비교 후 더 이상 나눠지지 않아질때까지 반복해주었습니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
938. Range Sum of BST (BST의 범위 합) (0) | 2022.12.12 |
---|---|
412. Fizz Buzz (피즈버즈) C# (0) | 2022.11.28 |
48. Rotate Image (이미지 회전) C# (0) | 2022.11.21 |
387. First Unique Character in a String (문자열의 첫 번째 고유 문자) C# (0) | 2022.11.18 |
26. Remove Duplicates from Sorted Array (정렬된 배열에서 중복 제거) C# (0) | 2022.11.16 |