본문 바로가기
알고리즘

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

by limew 2023. 6. 8.

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

 

  • 1씩 더해서 1의 갯수가 같을때 리턴
function getOneCount (n) {
    return [...n].filter(e => e === '1').length;
}

function solution(n) {
    var answer = 0;
    let newNum = n;
    const originalOneCount = getOneCount(n.toString(2));
    
    while(true) {
        newNum++;
        if (getOneCount(newNum.toString(2)) === originalOneCount) {
            return newNum;
        }
    }
    return answer;
}

 

 

  • 배열 안에서 1의 갯수 구하기
    • filter 보다 string.match(regex).length
  • 재귀함수 (처음,  비교할 수 = 처음+1)
    • 맨 처음에 비교할 수를 처음+1으로 해서 비교하고, 그 다음 재귀부터는 func(처음, 비교할수+1) 을 넣어줘서 처음과 그 다다음 수를 비교한다.
function solution(n, newNum = n+1) {
    return n.toString(2).match(/1/g).length === newNum.toString(2).match(/1/g).length
        ? newNum
        : solution(n, newNum+1);
}