수를 입력받아 2의 거듭제곱인지 여부를 리턴하기

정성준 (Seongjun Chung)·2021년 6월 2일
0

JS algorithms

목록 보기
1/3
post-thumbnail

입력

인자 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) {
  //num이 1인 경우는 무조건 true
  if(num === 1){
    return true;
  }
  //num이 홀수이면 무조건 false;
  if(num % 2){
    return false;
  }
  //2를 거듭제곱해서 비교할 수의 초기값은 2
  let poweredNum = 2;
  //poweredNum이 num보다 작을때까지만 while문 진행
  while(poweredNum < num){
    poweredNum *= 2;
  }
  //반복이 끝나면 poweredNum과 num이 같은지 비교값을 리턴
  return poweredNum === num;
}
profile
ZEP에서 프론트엔드 개발을 하고 있습니다.

0개의 댓글