νλ‘κ·Έλλ¨Έμ€ - λ€μ ν° μ«μ
λ¬Έμ
μ£Όμ΄μ§ 쑰건μ λ§λ 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;
}