새소식

프론트엔드 공부/자료구조 & 알고리즘

수를 입력받아 2의 거듭제곱인지 여부를 리턴해야 합니다.

  • -

powerOfTwo

문제

수를 입력받아 2의 거듭제곱인지 여부를 리턴해야 합니다.

입력

인자 1 : num

  • number 타입의 정수 (num >= 1)

출력

  • boolean 타입을 리턴해야 합니다.

주의 사항

  • 반복문(while)문을 사용해야 합니다.
  • 2의 0승은 1입니다.
  • Number.isInteger, Math.log2, Math.log 사용은 금지됩니다.

입출력 예시

let output1 = powerOfTwo(16);
console.log(output1); // true
let output2 = powerOfTwo(22);
console.log(output2); // false

코드

// 작성 코드
function powerOfTwo(num) {
  while(num >= 1){
    if (num & (num - 1)){
        return false}
    else{
        return true}
  } 
}

// 작성 코드2
function powerOfTwo(num) {
  if(num === 1) {
    return true
  }
  let x = 2;
  while (x < num) {
 	 x *= 2;
  }
  return x === num;
}

// 레퍼런스 코드
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;
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.