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

front_pica·2021년 5월 30일
0

문제

풀이과정

  1. 전달받은 s를 temp변수에 담는다.
  2. while문을 통해 temp문자열을 split으로 쪼갠 뒤 filter로 0이 아닌걸로 걸러준 뒤 길이를 구한뒤 length 변수에 담아준다.
  3. 원래 temp변수의 길이에서 length 변수를 빼주면 0이 제거된 갯수가 되므로 zeroCount에 더해준다.
  4. 이렇게 반복해서 length가 1이되면 빠져나가도록, 아니면 temp변수를 다시 새로운 이진수를 담고 count를 증가
  5. 결과적으로 count에는 반복된 횟수 zeroCount에는 0이 제거된 총 갯수가 나온다.

코드

function solution(s) {
    let count = 1;
    let zeroCount = 0;
    let temp = s;
    while(true) {
        const length = temp.split("").filter(item => item === '1').length;
        zeroCount += temp.length - length;
        
        if(length === 1) {
            break;
        } else {
            temp = length.toString(2);
            count ++;
        }
    }
    
    return [count, zeroCount]
}
profile
한걸음씩

0개의 댓글