Muscardinus

이진 변환 반복하기 본문

알고리즘 문제/[프로그래머스] 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

'알고리즘 문제 > [프로그래머스] Lv2' 카테고리의 다른 글

[3차] 방금그곡  (0) 2021.02.10
[3차] 압축  (0) 2021.02.07
쿼드압축 후 개수 세기  (0) 2021.02.03
메뉴 리뉴얼  (0) 2021.02.03
삼각달팽이  (0) 2021.02.01
Comments