📂 Base/알고리즘
2의 거듭제곱인지 여부를 리턴하기
Dev. Ella
2023. 3. 21. 14:42
📜 문제
수를 입력받아 2의 거듭제곱인지 여부를 리턴해야 합니다.
⚠️ 주의사항
- 반복문(while)문을 사용해야 합니다.
- 2의 0승은 1입니다.
- Number.isInteger, Math.log2, Math.log 사용은 금지됩니다.
✍🏻 내 풀이
function powerOfTwo(num) {
// 입력: num
// 출력: 2의 거듭제곱인지 여부 boolean 타입 리턴
// 주의: while문 사용, 2의 0승은 1
// num이 1이면 무조건 true
if (num === 1) {
return true;
}
// num이 홀수면 무조건 false
if (num % 2 === 1) {
return false;
}
// 2를 거듭제곱해서 비교할 수의 초기값은 2
let poweredNum = 2
// poweredNum이 num보다 작을때까지만 while문 진행
while(poweredNum < num) {
poweredNum = poweredNum * 2;
}
// 반복이 끝나면 poweredNum와 num이 같은지 비교값 리턴
return poweredNum === num;
}
💡 알아두면 좋을 개념
조건문, while 반복문
👩🏻💻 배운 점
1. 비교할 숫자는 초기값 설정을 해줄 것
2. 특정 숫자가 홀수인지 여부를 판단하는 것은 아래와 같이 두 가지 방법으로 작성할 수 있다.
// 1. num이 홀수면 무조건 false
if (num % 2 === 1) {
return false;
}
// 2. num이 홀수면 무조건 false
if (num % 2) {
return false;
}