기술 블로그
2제곱수 확인 본문
반응형
코테중 제곱수를 확인하는 문제가 있어 아래와 같이 구현했다.
parseInt(parseInt(n).toString(2).split('').reverse().join(''))===1
2의 제곱수 특성을 활용해 2진수 문자열로 변환 후 리버스 후 1과 같은지 확인했다.
다른 아래와 같은 방법도 있다.
1.비트연산
위의 이진수를 활용한 개념와 유사하지만 더 명료하게 비트연산을 활용한다.
function isSquare(n) {
return n > 0 && (n & (n - 1)) === 0;
}
만약 n이 8이라면
8 & 7의 and연산을 수행한다. 즉
1000과 0111의 and == 0000이므로 2의 제곱수가 맞다
만약 9일경우
1001 and 1000 = 1000 != 0이므로 2의 제곱수가 아니다.
2.로그연산
js의 Math에서는 로그연산을 지원한다.
function isSquareLog(n) {
return n > 0 && Number.isInteger(Math.log2(n));
}
로그 연산 후
isInteger() 를 활용해 정수인지 확인한다.
반응형
'프론트엔드 > Javascript' 카테고리의 다른 글
[TIL] 객체에 정렬 곁들이기 (0) | 2023.11.09 |
---|---|
[TIL] 클로저 (0) | 2023.11.06 |
[TIL] 깊은 복사 (0) | 2023.10.23 |
[TIL]꼬리 재귀 (0) | 2023.10.13 |
[TIL]동기와 비동기 (0) | 2023.10.13 |
Comments