코딩 테스트/프로그래머스 level2

다음 큰 숫자

fullfish 2022. 9. 9. 00:33

코드

function solution(n) {
  let nCount = n.toString(2).match(/1/g).length;
  while (n++) {
    if (n.toString(2).match(/1/g).length == nCount) return n;
  }
}

 

다른 사람의 쉬프트를 이용한 빠른 계산

function solution(n) {
    var i, j;
    for (i = 0; !(n & 1); i++) {n = n >> 1; } // 1을 찾을때까지 우로 쉬프트, 쉬프트 횟수 = i
    for (j = 0; n & 1; i++, j++) {n = n >> 1; } // 0을 찾을때까지 우로 쉬프트, 1의 갯수 = j
    for (j--, n++; i !== j; i--) {n = n << 1; } // 0자리에 1대입, 1의 갯수 -1, i === j 가 될때까지 죄로 쉬프트하면서 쉬프트 횟수 -1
    for (i; i; i--, n++) {n = n << 1; } // i === 0 될때까지 좌로 쉬프트 하면서 쉬프트 횟수 -1, 0자리에 1대입
    return n;
}

'코딩 테스트 > 프로그래머스 level2' 카테고리의 다른 글

영어 끝말잇기  (0) 2022.09.09
카펫  (0) 2022.09.09
다리를 지나는 트럭  (0) 2022.09.09
피보나치 수  (0) 2022.09.08
숫자의 표현  (0) 2022.09.08