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(원하는 진법)을 입력해주면 잘 출력이 될 것이다.
문자열이면 ?
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;
}```
다른 사람의 풀이를 보니 정규식으로 야무지게 처리를해준 것을 볼 수 있었다.