Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 발더스모드
- 게임
- 메탈퍼즐
- 취미
- 밥먹고
- 하스스톤
- 뜨아거
- 미앤아이
- 발더스게이트
- DIY
- 발더스3
- 버즈2프로
- 알고리즘테스트
- 맛집
- 천등
- 노노그램
- 눈알빠지겠네
- 잠실새내
- LeetCode
- 바질토마토뭐시기
- 메일우유
- 누룽지소금빵
- 코테
- javascript
- 나쫌
- 코딩테스트
- 서울제빵소
- 토이프로젝트
- 3d퍼즐
- 송리단
Archives
- Today
- Total
.Zzumbong
[leetCode/JS] 374. Guess Number Higher or Lower 본문
문제 설명
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.*
입출력 예
Example 1:
Input: n = 10, pick = 6
Output: 6
Example 2:
Input: n = 1, pick = 1
Output: 1
Example 3:
Input: n = 2, pick = 1
Output: 1
Constraints
1 <= n <= 231 - 1
1 <= pick <= n
내 솔루션
- 계속 lower, higher 갱신 해가면서 중간 값으로 재귀를 돌리는 형태로 짬.
- 풀고나서 조금 다듬고 싶었는데 당이 떨어졌는지 머리가 안굴러갔다.
var guessNumber = function(n) {
let lower = 0;
let higher = n;
const find = (cur) => {
let isGuess = guess(cur);
let middle = 0;
if(isGuess === 0) {
return cur;
} else if(isGuess === 1) {
middle = Math.floor((cur + higher) / 2)
lower = cur;
} else {
middle = Math.floor((lower + cur) / 2)
higher = cur;
}
return find(middle);
}
return find(n);
};
최고의 솔루션
- 재가 짠 재귀랑 컨셉, 로직은 같지만 가장 이쁘게 짠 솔루션! 아주 똑똑이다.
- 대신
guess()
를 3번까지 호출 할 수 있겠지만..
var guessNumber = function(n) {
const findNumber = (start, end) => {
const mid = Math.floor((end + start)/2);
if (guess(mid) === 0) return mid;
if (guess(mid) === -1) return findNumber(start, mid - 1);
if (guess(mid) === 1) return findNumber(mid + 1, end);
}
return findNumber(0, n);
};
감상평
guess()
함수가-1
리턴하면 내가 고른게 더 크다는 것이 직관적이지 않았다.- 차라리 반대로
1
이 크고-1
이 작은거면 좋 았을 것인디!
'coding test > leetCode' 카테고리의 다른 글
[leetCode/JS] 223. Rectangle Area (0) | 2022.11.23 |
---|---|
[leetCode/JS] 1975. Maximum Matrix Sum (0) | 2022.11.23 |
[leetCode/JS] 1721. Swapping Nodes in a Linked List (0) | 2022.11.23 |
[leetCode/JS] 1700. Number of Students Unable to Eat Lunch (0) | 2022.11.23 |
[leetCode/JS] 3. Longest Substring Without Repeating Characters (0) | 2022.11.23 |
Comments