코딩 테스트/프로그래머스 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;
}