Problem Solving/프로그래머스

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

세고래 2022. 11. 7. 18:06

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

 

프로그래머스

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

programmers.co.kr


1) 풀이

저번에 자바스크립트에서 진법 변환하는 방법을 올렸었는데, 그거에 대한 응용 ver 라고 생각이 드다

이 문제에서는 이진변환을 하는데, 이진 변환에는 총 두 단계가 있다

  1. x의 모든 0을 제거합니다.
  2. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.

이 두 단계를 마치면 이진변환 한 번이 완료되는 것이다

1번의 경우에는 split을 이용했다. split 함수 안에 0을 넣어주고 join을 해주면, 0을 제외한 모든 문자열들이 반환될 것이다!

(split(0)-> 0을 구분자로 구분되는 문자열들이 배열에 담긴다->join('')->지금 배열로 되어있는 것들을 공백없이 문자열로 합쳐준다 => 결과적으로 0을 제외한 문자열들이 반환된다

 

그 다음엔 적절하게 answer 배열에서 수를 늘려주고, toString(2)를 통해 0을 제외하고 반환된 문자열의 길이를 이진법으로 표현하고 이진변환 카운트를 하나 늘려주면 끝~ 

2) 최종 소스코드
function solution(s) {
    const answer=[0,0];
    let tmp=0;
    while(s!==1){
        tmp=s.split(0).join('');
        answer[1]+=s.length-tmp.length;
        s=tmp.length.toString(2);
        answer[0]++;
    }
    return answer;
}

 

728x90