2020.코딩일지
[코플릿]Algorithm Basic-03_powerOfTwo 본문
728x90
수를 입력받아 2의 거듭제곱인지 여부를 리턴해야 합니다.
입출력예시
더보기
//입출력예시
let output1 = powerOfTwo(16);
console.log(output1); // true
let output2 = powerOfTwo(22);
console.log(output2); // false
👻수포자였는데 수학개념을 익힐 수 있는 기회가 되어 기쁘다. 하하핳 두뇌의 간질간질함이 느껴진다:-0
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;
}
1은 2의 0번째 거듭제곱이다. 2^{0} = 1
그래서 1은 true.
num%2하면 0 또는 1로만 나온다
if문에 '0은 flase, 1은 true로 인식' 하기때문에
그런데 %2의 1이라는 뜻은, '2의 거듭제곱이 아니'니까 false를 리턴해야지.
//그런데 이거 없어도 테스트통과되지만 한번 걸러주는 의미에서 인가?????
.........여기서부터어렵🫠
num%2하면 0인경우, while에서 환영함돠
2의거듭제곱인 powered와 입력받은 num을 계속비교한다. (powered가 num보다 작을때까지)
같거나 powered가 num보다 크다면?
같으면 true (16을 num으로 넣었을 때 '16<16'이 되어 ===에서 true를 뱉는다)
다르면 flase (22를 num으로 넣었을 때 '32<22'가 되어 ===에서 false를 뱉는다)
'algorithm' 카테고리의 다른 글
[코플릿]Algorithm Basic-05_firstReverse (0) | 2022.08.07 |
---|---|
[코플릿]Algorithm Basic-04_firstCharacter (0) | 2022.07.31 |
[코플릿]Algorithm Basic-02_computeWhenDouble (0) | 2022.07.31 |
[코플릿]Algorithm Basic-01_transformFirstAndLast (0) | 2022.07.31 |
코플릿[자료구조] Stack & Queue [BEB 6th]013일차 (0) | 2022.07.23 |
Comments