문제
풀이과정
- 전달받은 s를 temp변수에 담는다.
- while문을 통해 temp문자열을 split으로 쪼갠 뒤 filter로 0이 아닌걸로 걸러준 뒤 길이를 구한뒤 length 변수에 담아준다.
- 원래 temp변수의 길이에서 length 변수를 빼주면 0이 제거된 갯수가 되므로 zeroCount에 더해준다.
- 이렇게 반복해서 length가 1이되면 빠져나가도록, 아니면 temp변수를 다시 새로운 이진수를 담고 count를 증가
- 결과적으로 count에는 반복된 횟수 zeroCount에는 0이 제거된 총 갯수가 나온다.
코드
function solution(s) {
let count = 1;
let zeroCount = 0;
let temp = s;
while(true) {
const length = temp.split("").filter(item => item === '1').length;
zeroCount += temp.length - length;
if(length === 1) {
break;
} else {
temp = length.toString(2);
count ++;
}
}
return [count, zeroCount]
}