๐ ๋ฌธ์
์๋ฅผ ์ ๋ ฅ๋ฐ์ 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;
}
๋๊ธ