코딩테스트
[JS] 이진 변환 반복하기
미안하다 강림이 좀 늦었다
2023. 11. 10. 17:42
난이도: Lv.2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘
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진수로 바꾸는 코드 직접 짤 생각하니까 너모 귀찮았는데 다행히도 함수가 있었다.