프로그래머스 Lv.2 : 이진 변환 반복하기

zeroequaltwo·2022년 11월 30일
0

코딩테스트

목록 보기
54/69

문제

프로그래머스 문제

내 풀이

  • 맨 처음에 for를 돌려서 0을 지운 횟수를 체크했더니 마지막 문제에서 시간초과가 났다. 그래서 그냥 0 개수 split해서 세고 replaceAll 처리했더니 속도가 굉장히 개선됐다.
  • 1점 맞은 답변^^!
function solution(s) {
    let i = 0;
    let z = 0;
    while(s > 1){
        // for(var t of s){
        //     if(t === "0"){
        //         z++;
        //         s = s.replace("0","");
        //     }
        // }
        
        z += s.split("0").length-1;
        s = s.replaceAll("0","")
        
        s = s.length.toString(2);
        i++;
    }
    
    return [i, z];
}

개선점

  • match() -> 찾는 문자열을 그 개수만큼 배열로 리턴
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;
}
profile
나로 인해 0=2가 성립한다.

0개의 댓글