๋ฌธ์ œ

์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งž๋Š” 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;
}

 

+ Recent posts