function powerOfTwo(num) {
// 2의 거듭제곱인지 여부를 boolean으로 리턴
if (num === 1) { // 1은 2^0 이니까 true
return true;
}
if (num % 2) { // 홀수는 false
return false;
}
while (num > 1) {
num = num /2
if (num === 2) {
return true;
}
}
return false
}
작성하고 보니 코드가 깔끔하지 않은 것 같아서 레퍼런스 코드를 봤다. 레퍼런스 코드에서는 입력된 num과 같아질때까지 2를 계속 곱해주는 식으로 구현했다.
function powerOfTwo(num) {
if (num === 1) {
return true;
}
if (num % 2) {
return false;
}
let powered = 2;
while (powered < num) {
powered = powered * 2;
}
return powered === num;
}