[자바스크립트/javascript] 프로그래머스 : 다음 큰 숫자 (Lv.2)

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

 

function solution(n) {
    let m = n
    let n = [...n.toString(2)].reduce((a,c) => parseInt(a) + parseInt(c))
    while (true) {
        m += 1
        if (n === [...m.toString(2)].reduce((a,c) => parseInt(a) + parseInt(c))) {
            return m;
            break
        }
    }
}

 

 

다른사람 풀이

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);
}

재귀방식

match가 파이썬에서 count함수와 비슷한 함수인가보다.

근데 match는 찾아서 배열으로 반환하는듯? 그래서 length를 이용해서 길이가 같은지 확인하면 되는 것 같다.

그리고 정규표현식을 이용하였다.. 안에 특정문자를 찾아서 모두 반환하고 싶을 때, //g형식 사용하면 되는 거 기억해두자.

(만약 영단어를 찾을 때 대소문자 구별하지 않고 모두 찾고 싶으면 //gi형식으로 찾으면 된다)

이런식으로 반환된다

comment