๋ฌธ์
์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง๋ n์ ๋ค์ ํฐ ์ซ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
- ์กฐ๊ฑด 1. n์ ๋ค์ ํฐ ์ซ์๋ n๋ณด๋ค ํฐ ์์ฐ์ ์ ๋๋ค.
- ์กฐ๊ฑด 2. n์ ๋ค์ ํฐ ์ซ์์ n์ 2์ง์๋ก ๋ณํํ์ ๋ 1์ ๊ฐฏ์๊ฐ ๊ฐ์ต๋๋ค.
- ์กฐ๊ฑด 3. n์ ๋ค์ ํฐ ์ซ์๋ ์กฐ๊ฑด 1, 2๋ฅผ ๋ง์กฑํ๋ ์ ์ค ๊ฐ์ฅ ์์ ์ ์ ๋๋ค.
์ ์ถ๋ ฅ ์
n | result |
78 | 83 |
15 | 23 |
ํ์ด
n๋ณด๋ค ํฌ๊ณ , 2์ง์๋ก ๋ณํํ์๋ n๊ณผ 1์ ๊ฐฏ์๊ฐ ๊ฐ๋ค -> n๊ณผ n๋ณด๋ค ํฐ์๋ฅผ 2์ง์๋ก ๋ณํํ๋ค.
์กฐ๊ฑด 2๊ฐ์ง๋ฅผ ๋ง์กฑํ๋ ์ ์ค์์ ๊ฐ์ฅ ์์ ์
2์ง์๋ก ๋ณํ -> toString() ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
n์ 1์ ๊ฐ์๋ฅผ ์ฐพ์๋๊ณ ,
while๋ฌธ์ผ๋ก n์ ํ๋์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ๋ค์ ํฐ ์์ 2์ง์์ 1์ ๊ฐ์๋ฅผ ์ฐพ๋๋ค.
๋น๊ตํด์ ๊ฐ์ผ๋ฉด ๋ฉ์ถ๊ณ , n์ ๋ฆฌํดํ๋ค.
์ฝ๋
const solution = (n) => {
let binary = n.toString(2);
let count = 0;
// count : n์ ์ด์ง์์์ 1์ ๊ฐ์
for (let x of binary) {
if (x === '1') count++;
}
while (true) {
n += 1;
let bigNumBinary = n.toString(2);
let bigNumCount = 0;
// ๋ค์ ํฐ ์ซ์์ count
for (let x of bigNumBinary) {
if (x === '1') bigNumCount++;
}
if (count === bigNumCount) break;
}
return n;
}
'๐กAlgorithm > ๋ฌธ์ ํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค | Level 2 - ์ซ์์ ํํ (0) | 2021.11.04 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค | Level 2 - ์ต์๊ฐ ๋ง๋ค๊ธฐ (0) | 2021.11.04 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ (1) | 2021.11.04 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2021.10.29 |
JS์๊ณ ๋ฆฌ์ฆ | ์์ ํ์ - ์กธ์ ์ ๋ฌผ (0) | 2021.10.27 |