Algorithm 3 : powerOfTwo

hyeongirlife·2021년 9월 13일
0

Algorithm

목록 보기
3/30

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

예시

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

생각
1. 2의 거듭제곱이므로 짝수다. 짝수의 특징은 2로 계속 나누었을 때 나머지가 0이 나오거나 2를 계속 뺐을 때 0이 나온다는 성질을 이용해보자.
2. while문을 사용해야 하므로, 주어진 값이 true일 때 까지 2로 나누거나 빼보자

풀이

function powerOfTwo(num) {
if(num === 1) {
  return true;
}
if (num % 2 !== 0){
  return false;
}
let powered = 2;
while(powered < num){
  powered = powered * 2
}
return powered === num;
}

깨달은 점
1. 주어진 수가 짝수인 경우, 초기값이 2인 변수에 계속 2를 곱하면 언젠가 만난다는 사실을 갖고 while문을 통해 해결한 코드를 보고 이런 아이디어도 있구나 라고 느꼈다.
2. 내가 생각한 짝수의 개념은 2의 배수만 골라내지 못하기 때문에 한계가 있음을 알게됐다.

profile
머릿속에 있는 내용을 정리하기

0개의 댓글

관련 채용 정보