기술 블로그

2제곱수 확인 본문

프론트엔드/Javascript

2제곱수 확인

jaegwan 2023. 11. 20. 16:01
반응형

코테중 제곱수를 확인하는 문제가 있어 아래와 같이 구현했다.

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