본문 바로가기
알고리즘

[프로그래머스] 이진 변환 반복하기

by limew 2023. 7. 13.

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

 

1. 0제거

2. 0을 제거한 수 의 1의 갯수의 이진수

3. return [변화 횟수, 변화 과정 중 0의 총 갯수]

function solution(s) {
    var answer = [];
    let changeCount = 0;
    let zeroCount = 0;
    
    // s가 "1"이 될 때까지
    while(s.length > 1) {
        let zeros = 0;
        zeros += [...s].filter(e => e === '0').length;
        zeroCount += zeros
        const removedZeroLength = s.length - zeros;
        s = removedZeroLength.toString(2);
        changeCount++;
    }
    answer = [changeCount, zeroCount]
    return answer;
}

 

 

  • 0 찾기: s.match(/0/g)
  • 0 없애기: s.replace(/0/g, '')
  • 숫자.toString(2): 이진법 변환
function solution(s) {
    var answer = [0, 0];
    
    while (s.length < 1) {
        answer[0] += 1;
        answer[1] += s.match(/0/g).length;
        s = s.replace(/0/g, '').length.toString(2); // 0제거한 수의 1갯수의 이진법
    }
    return answer;
}