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 | 31 |
Tags
- indexOf()
- 소수점 올림내림
- reat if문
- isNaN()
- Eventlitener
- useState()
- setDate
- Math.floor()
- filter()
- substring()
- sort()
- new Date()
- useEffect()
- slice()
- 차집합
- repeat()
- toUpperCase()
- charAt()
- includes()
- map()
- 항해99솔직후기 #항해99장점 #항해99단점 #부트캠프추천
- getday()
- jsx반복문
- Math.sqrt()
- React
- useRef()
- parseInt()
- Number()
- 3진수
- 교집합
Archives
- Today
- Total
개발자로 전향중
[프로그래머스] 정수 제곱근 판별 - 이진탐색 본문
문제 설명
문제풀이
function findNextSquare(n) {
let low = 1;
let high = n;
// 이진 탐색 시작
while (low <= high) {
let mid = Math.floor((low + high) / 2);
let square = mid * mid;
if (square === n) {
// n이 mid의 제곱이라면, (mid+1)의 제곱을 반환
return (mid + 1) * (mid + 1);
} else if (square < n) {
low = mid + 1; // 제곱이 n보다 작으면 더 큰 범위에서 탐색
} else {
high = mid - 1; // 제곱이 n보다 크면 더 작은 범위에서 탐색
}
}
// 제곱근을 찾지 못했을 때
return -1;
}
// 테스트 예시
console.log(findNextSquare(121)); // 144 (11^2 이므로 12^2 반환)
console.log(findNextSquare(625)); // 676 (25^2 이므로 26^2 반환)
console.log(findNextSquare(114)); // -1 (제곱수가 아니므로 -1 반환)
'자료구조&알고리즘' 카테고리의 다른 글
[프로그래머스] 행렬의 덧셈 - 이차원 배열 (0) | 2024.09.30 |
---|---|
[프로그래머스] 약수의 개수와 덧셈 (0) | 2024.09.30 |
[프로그래머스] 문자열 내 p와 y의 개수 - 배열(빈도수 세기) (0) | 2024.09.24 |
[프로그래머스] 정수 내림차순으로 배치하기 - 배열(지수정렬) (0) | 2024.09.24 |
[프로그래머스] 자릿수 더하기 - 배열 (0) | 2024.09.24 |