알고리즘/문제 풀이
[프로그래머스] 이진 변환 반복하기 (월간 코드 챌린지 시즌 1)
degurii
2021. 4. 15. 10:54
728x90
문제 링크
programmers.co.kr/learn/courses/30/lessons/70129
코딩테스트 연습 - 이진 변환 반복하기
programmers.co.kr
풀이
정규 표현식을 이용하여 간단하게 풀 수 있습니다.
1) regexp /1/g를 이용해 s에서 1만 뽑아줍시다.
2) 정답에 (s의 길이 - 위에서 구한 1들의 개수)를 더해줍니다.
3) 1들의 개수를 2진 변환합니다.
4) s가 1이 될 때까지 반복합시다.
정답 코드
function solution(s) {
const ans = [0, 0];
while(s !== '1'){
const cnt = s.match(/1/g).length;
ans[0]++;
ans[1] += s.length - cnt;
s = cnt.toString(2);
}
return ans;
}
728x90