본문 바로가기

⏳ 알고리즘/JavaScript 알고리즘

프로그래머스 - LV2. 이진 변환 반복하기(월간 코드 챌린지 시즌1)

문제

https://programmers.co.kr/learn/courses/30/lessons/70129?language=javascript 

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

 

코드

- 정규 표현식 이용 

function solution(s) {
    let answer = [0,0];
    
    while (s != "1") {
        answer[0] += 1;
        answer[1] += s.length
        s = s.replace(/0/g, '') //0제외
        answer[1] -= s.length //1의 개수 빼기
        s = s.length.toString(2)
    }
    
    return answer;
}

replace부분에 정규표현식을 사용해서 모든 0을 제거할 수 있었다.

 

 

 

 

 

 

 

 

 

 

다른 코드

function solution(s) {
    var answer = [0,0];
    while(s.length > 1) {
        answer[0]++;
        answer[1] += (s.match(/0/g)||[]).length;
        s = s.replace(/0/g, '').length.toString(2);
    }
    return answer;
}