이진법 비트연산 그런거 모른다. 무식하게 때려풀어도 풀린다.
function powerOfTwo(num) {
if(num === 1) {
return true;
}
let power = 2;
while(power < num) {
power *= 2;
}
return power === num;
}
num이 몇이건 num⁰ = 1 은 정해져있는 수순이므로 따로 뺀다.
power 변수에 2를 할당한 다음, num 보다 작은 동안에 2씩 계속 곱한다.
만약 num 이 2의 거듭제곱이라면, while문을 막 빠져나온 power 값과 일치할 것이다.
=== 연산자를 사용했으므로 power 와 num 이 같은지 여부가 boolean 형태로 리턴된다.