Algorithm

[프로그래머스/JavaScript] Lv.2 이진 변환 반복하기

cob 2022. 12. 6. 12:33

 

 

해당 문제는 진수 변화를 반복하는 문제이다.




 

프로그래머스

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

programmers.co.kr

 

 


1. 문제 설명

문제 설명

 

 


2. 입출력 예

입출력 예

 

 


3. 문제 풀이

재귀 함수를 통해 s의 값이 1이 될 때까지 반복하여 값을 구한다.
function solution(s) {
    return dfs(s, 0, 0);
};
// 1) 재귀 함수를 통해 마지막 결과 값을 가져온다.
function dfs(s, cnt, len) {
    // 2) s 값이 1이되면 반복 횟수, 0삭제 갯수를 return 한다.
    if(s == 1) return [cnt, len];
    
    // 3) s의 총길
    let afLen = s.length;
    
    // 4) 2진수의 0을 제거
    s = s.replace(/0/gi, '');
    
    // 5) 0을 제거한 2진수의 총 길이
    let bfLen = s.length;
    
    // 6) 제거한 0의 개수
    let zeroCnt = afLen - bfLen;
    
    // 7) 다시 반복 한다.
    return dfs(Number(bfLen).toString(2), ++cnt, len+zeroCnt)
};
  • toString(2) : 10진수를 2진수로 변환해주는 메서드
반응형