해당 문제는 진수 변화를 반복하는 문제이다.
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진수로 변환해주는 메서드
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스/JavaScript] Lv.1 문자열 나누기 (0) | 2022.12.08 |
---|---|
[프로그래머스/JavaScript] Lv.2 점 찍기 (0) | 2022.12.07 |
[프로그래머스/JavaScript] Lv.3 억억단을 외우자 (0) | 2022.12.05 |
[프로그래머스/JavaScript] Lv.1 명예의 전당 (1) (0) | 2022.11.30 |
[프로그래머스/JavaScript] Lv.2 귤 고르기 (1) | 2022.11.25 |