코딩테스트

[JS] 다음 큰 숫자

미안하다 강림이 좀 늦었다 2023. 11. 13. 20:46

 

 

난이도: Lv.2

문제: https://school.programmers.co.kr/learn/courses/30/lessons/12911

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

알고리즘

1의 개수를 카운팅 하는 방법

1. toString() 함수로 2진수 문자열로 변환

2. 1을 정규표현식을 사용하여 replace() 함수로 0 제거

3. 2의 길이 구하기

 

다음 큰 숫자 구하는 방법

n + 1인 자연수부터 2진수의 1의 개수를 카운팅하여 n을 2진수로 변환한 것의 1의 개수와 동일한지 확인

 

 

코드

function solution(n) {
    let answer = n + 1;
    const nOneCount = n.toString(2).replace(/0/g, '').length;

    while (true) {
        if (answer.toString(2).replace(/0/g, '').length === nOneCount) { break; }
        answer++;
    }

    return answer;
}

 

 

주저리

이진 변환 반복하기 문제에서 썼던 코드랑 동일한 문제다. ez하게 풀어서 할 말이 딱히 없군