Problem Solving/프로그래머스

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

세고래 2022. 11. 8. 02:28

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

 

프로그래머스

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

programmers.co.kr


1) 풀이

레벨2에 들어와서 유독 진법변환 문제를 많이 푸는 듯~ 덕분에 진법 변환하는 건 완전히 익혔다

이 문제는 내가 이제까지 익힌 것들을 모두 총정리하는 느낌이었다

 

1. toString(2) 으로 이진법으로 표현할 수 있음

2. 문자열을 spread 문법으로 펼치면 배열 만들 수 있음

3. filter()는 배열 각 요소에 대하여 주어진 함수의 결과값이 true인 모든 요소 모아서 새 배열 반환-> 여기에 length 붙이면 그 반환되는 배열 길이, 즉 1의 개수

 

대충 이렇게고~ 다른 문제와 다르게 같은 기능을 하는 코드가 있어서 함수로 묶어보았다

잘하고 있는 고겠지 화이팅😁

2) 최종 소스코드
function solution(n) {
    function transN(k){
        return [...k.toString(2)].filter(v=>v==="1").length;
    }
    const count =transN(n);
    let nextCount=0;
    while(nextCount!==count){
        ++n;
        nextCount=transN(n);
    }
    return n;
}

 

728x90