본문 바로가기
자료구조 & 알고리즘

프로그래머스 이진 변환 반복하기 - 자바스크립트 풀이

by PARADISE247 2024. 11. 27.
반응형
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

첫번째 코드

이진수로 변환하는 함수를 구현한 후 해당 함수를 이용하여 0의 개수와 이진 변환 횟수를 구한다.

function binary(num){ // 이진 변환 함수
    let bin = [];
    while(num >= 0){
        if(num <= 1) {bin.unshift(num); break;}
        bin.unshift(num % 2);
        num = parseInt(num / 2);
    }
    return bin.join("");
}
function solution(s) {
    let answer = [0,0];
    while(s !== "1"){
        answer[1] += Array.from(s).filter(x => x === "0").length;
        s = binary(s.replaceAll("0","").length);
        answer[0] += 1;
    }
    return answer;
}

 

두번째 개선 코드

toString(2)를 활용하여 간단하게 이진수로 변환해주는 방식을 채택했다.

 

function solution(s) {
    let answer = [0,0];
    while(s !== "1"){
        answer[0] += 1;
        answer[1] += [...s].filter(x => x === "0").length;
        s = s.replaceAll("0", "").length.toString(2);
    }
    return answer;
}

 

두 방식 모두 문제의 s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 조건에 따라 while문 조건을 설정하였다. 

while(s !== "1")

 

반응형