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

비슈·2023년 6월 26일
0

코딩테스트준비[JS]

목록 보기
2/11

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

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

문제 설명은 다음과 같다.

문제에서 요구하는 것

1 . 0을 없애준다.
2. 남은 문자열의 길이를 이진수로 변환
3. 문자열이 '1'이 될때까지 반복

내 풀이

function solution(s) {
    
    let count = 0;
    let loop = 0;
    var array = [];
    while(true){
        let tmp = [];
        let zero = s.length;
        s = s.split('').filter((element) => element==1); **1**
        count += zero- s.length;
        if(s.length ===1){								 **3**
            break;     
        }
        loop++;
        s = s.length.toString(2);    					 **2**
        console.log(loop); 
        if(s.length ===1){								 **3**
            break;   									 
        }
    }
    loop++;
    
    return [loop,count];
}

다음과같이 1번과 2번 3번 조건을 적절히 배치해주었다.

여기서 당연하면서도 새로 배운것은

toString

숫자.toString(원하는 진법)을 입력해주면 잘 출력이 될 것이다.

문자열이면 ? 
	let a = '222'; 

	a.toString(2);   /// '222'

	a = a/1   ///숫자로 바꿔줌

	a.toString(2)  ///'11011110'

	typeof a.toString(2) /// string

	

당연한거지만 toString이므로 결과값은 string을 유의하면 될 것같다.

다른 사람의 풀이

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개의 댓글