[프로그래머스 | Javascript] 다음 큰 숫자

박기영·2023년 1월 12일
0

프로그래머스

목록 보기
118/159
post-custom-banner

solution

function solution(n) {
    let num = n + 1;
    const oneInBinaryN = [...n.toString(2)].filter((str) => str !== "0").length;

    while(true){
        const oneInBinaryNum = [...num.toString(2)].filter((str) => str !== "0").length;
        
        if(oneInBinaryN === oneInBinaryNum){
            break;
        }
        
        num += 1;
    }
    
    return num;
}

방법은 다음과 같다.
toString(2)을 통해 2진수로 변환한 후, 이를 배열화한다.
1의 개수가 일치하는 것이 관건이므로, 0인 것을 제외한 배열의 길이를 구한다.

n으로 주어진 숫자가 판별의 기준이 되고,
조건을 만족하는 가장 작은 숫자를 구하기 위해서는 1씩 증가시키면서 연산을 진행하면 된다.

조건을 만족하면 반복을 종료하고, 해당 num을 출력한다.

다른 분 풀이

function solution(n,a=n+1) {
    return n.toString(2).match(/1/g).length == a.toString(2).match(/1/g).length ? a : solution(n,a+1);
}

정규식을 활용하신 분이 계셨다.
글로벌하게 1을 탐색하여 얻은 배열의 길이를 활용하셨다.

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글