코딩테스트
[JS] 월간 코드 챌린지 시즌1 > 이진 변환 반복하기
차차한
2022. 9. 8. 12:30
function solution(s) {
var zero = 0;
var count = 0;
while(s.length > 1){
for(var i = 0; i < s.length; i++){
if(s[i] == 0){
zero++;
}
}
s = s.split("0").join("").length.toString(2);
count++;
}
return [count, zero];
}
문자열에 0을 없앤 후 문자열의 길이를 2진법으로 바꿔 최종적으로 1만 남기는 문제다.
계속 반복을 해야하기때문에 while 반복을 했고 최종적으로 1만 남으면 s의 길이가 1이 되는 것이기에 조건은 s.length > 1 로 설정했다.
문자열 중에 0이 있으면 zero를 1씩 올려주었고, 문자열 전체에서 0을 찾아본 후에, 0을 기준으로 split해 1만 남은 배열로 만든 후 join으로 다시 문자열로 만들어주고 그 길이를 2진법으로 바꿔줬다.
이러한 과정을 할 때마다 count도 1씩 올려줬다.
최종적으로 [count, zero]를 리턴해주면 끝!