난이도: Lv.2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/70129
알고리즘
1. 문자열에서 '0'을 모두 제거한다.
2. 1의 문자열 길이를 구한다.
3. 2진수 문자열로 변환한다.
4. 문자열이 '1'이 될 때까지 1 ~ 3의 과정을 반복한다.
코드
function solution(s) {
var answer = [];
let loopCount = 0, zeroCount = 0;
while (s !== '1') {
zeroCount += s.length;
s = s.replace(/0/g, '');
zeroCount -= s.length;
s = s.length.toString(2);
loopCount++;
}
answer.push(loopCount);
answer.push(zeroCount);
return answer;
}
주저리
replace('0', '')으로 했다가 처음 0 하나밖에 안지워져서 정규표현식을 썼다. 정규표현식 짱짱 편함. 10진수를 2진수로 바꾸는 코드 직접 짤 생각하니까 너모 귀찮았는데 다행히도 함수가 있었다.
'코딩테스트' 카테고리의 다른 글
[JS] 짝지어 제거하기 (0) | 2023.11.15 |
---|---|
[JS] 피보나치 수 (0) | 2023.11.13 |
[JS] 다음 큰 숫자 (0) | 2023.11.13 |
[JS] 숫자의 표현 (1) | 2023.11.10 |
[JS] 올바른 괄호 (0) | 2023.11.10 |