Lv.2 : 이진 변환 반복하기 [JavaScript]

2022. 9. 24. 22:24Algorithm/프로그래머스

반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 풀이

function solution(s) {
    var zero = 0;
    var cnt = 0;
    
    while(s!=1){
        var arr = s.split("");
        var temp = '';
        for(var i=0; i<arr.length; i++){
            if(arr[i] == 1){
                temp+=1;
            }else{
                zero++;
            }            
        }
        cnt++;
        s = temp.length.toString(2);
    }
    
    return [cnt, zero];
}

제거한 0의 개수를 저장할 zero와 이진 변환을 하는 횟수를 저장할 cnt를 만든다.

s가 1이 될때까지 while문을 돌며

s의 i번째 자리가 1이면 temp문자열에 1을 합쳐주고, 0이면 zero를 늘려준다.

s의 모든 자리 확인이 끝나면 cnt를 증가시키고, s에 temp를 2진수로 변환해 넣는다.

반응형