코딩테스트

[JS] 연습문제 > 다음 큰 숫자

차차한 2022. 9. 13. 11:19

function solution(n) {
    var answer = 0;
    var num = n.toString(2).split("1").length;
    
    while(true){
        
        answer = ++n;
        
        if(answer.toString(2).split("1").length == num){
            break;
        }
    }
    return answer;
}

n 다음 큰 수가 n을 2진수로 변환했을 때 1의 개수와 같기 때문에 1의 개수를 변수 num에 미리 저장해둔다.

다음 수를 찾을 때까지 계속 값을 더해야하기 때문에 while 반복문을 돌려 

n에서 1씩 더하면서 그 값(answer)을 2진수로 변환하고 1의 개수가 num과 같다면 반복문을 빠져나오고 answer를 리턴해준다.