알고리즘 문제/[프로그래머스] Lv2
이진 변환 반복하기
Muscardinus
2021. 2. 6. 23:04
728x90
programmers.co.kr/learn/courses/30/lessons/70129?language=javascript
코딩테스트 연습 - 이진 변환 반복하기
programmers.co.kr
function rec(s, answer) {
if (s === "1") return answer;
else {
let cnt = 0;
let changeS = "";
s.split("").forEach((el) => {
if (el === "1") changeS += el;
else cnt++;
});
changeS = changeS.length.toString(2);
return rec(changeS, [answer[0] + 1, answer[1] + cnt]);
}
}
function solution(s) {
let answer = [0, 0];
return rec(s, answer);
}
좋은 풀이
function solution(s) {
let answer = [0, 0];
while (s.length > 1) {
answer[0]++;
answer[1] += (s.match(/0/g) || []).length;
s = s.replace(/0/g, "").length.toString(2);
}
return answer;
}
728x90