๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ๋‹ค์Œ ํฐ ์ˆซ์ž (12911)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋‹ค์Œ ํฐ ์ˆซ์ž

์ž์—ฐ์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด 1. n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” n๋ณด๋‹ค ํฐ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ์กฐ๊ฑด 2. n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž์™€ n์€ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ 1์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๊ฐ™์Šต๋‹ˆ

programmers.co.kr

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž์—ด์˜ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ชจ๋‘ count ํ•˜๋Š” ํ•จ์ˆ˜ countOne()๋ฅผ ๋งŒ๋“ค๊ณ 

n์„ 1์”ฉ ์ฆ๊ฐ€์‹œ์ผœ 2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  countOne์— ๋„ฃ์–ด

n.toStirng(2)์™€ next.toString(2)์˜ 1์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์„ ๋•Œ answer์„ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค.

 

function solution(n) {
    var answer = 0;
    let next = n+1;
    
    while(next <= 1e6){
      const binaryN = n.toString(2);
      let nextBinary = next.toString(2);

      if(countOne(binaryN) === countOne(nextBinary)){
        answer = next;
        break;
      }

      next++;
    }
    
    return answer;
}

const countOne = (binary) => {
  let cnt = 0;
  
  for(let i = 0; i < binary.length; i++){
    if(binary[i] === '1') cnt++;
  }

  return cnt;
}