다음 큰 숫자 (Level 3)

문제

어떤 수 N(1≤N≤1,000,000) 이 주어졌을 때, N의 다음 큰 숫자는 다음과 같습니다.

  • N의 다음 큰 숫자는 N을 2진수로 바꾸었을 때의 1의 개수와 같은 개수로 이루어진 수입니다.
  • 1번째 조건을 만족하는 숫자들 중 N보다 큰 수 중에서 가장 작은 숫자를 찾아야 합니다.

예를 들어, 78을 2진수로 바꾸면 1001110 이며, 78의 다음 큰 숫자는 83으로 2진수는 1010011 입니다.

N이 주어질 때, N의 다음 큰 숫자를 찾는 nextBigNumber 함수를 완성하세요.

풀이

function nextBigNumber(n){
  let result = 0;
    for ( let i = n+1; ; i++) {
      if ( n.toString(2).match(/1/gi).length == i.toString(2) .match(/1/gi).length) {
        return i
    }
  }
}

//아래 코드는 테스트를 위한 코드입니다.
console.log(nextBigNumber(78));

이진법으로 변경후에 1의 개수를 비교해 같은 결과가 나올때까지 반복 후 i 리턴

다른 사람의 풀이

가독성은 다른 코드들이 괜찮지만, 짧은코드가 더 좋아서(고수느낌ㅎ) 안가져왔음


+ Recent posts