[프로그래머스] 이진 변환 반복하기
2023. 1. 19. 16:00ㆍ기록/Programmers
- 목차
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 문제 풀이
function solution(s) {
let answer = [0, 0];
while (s !== '1') {
const zeroCnt = s.match(/0/g) ? s.match(/0/g).length : 0;
answer[1] += zeroCnt;
const length = s.length - zeroCnt;
s = length.toString(2);
answer[0]++;
}
return answer;
}
- 주어진 문자열이 1이 될 때까지 반복함
- 0의 갯수를 카운트해서 변수에 할당함
- 0의 갯수를 정답 배열의 두번째 요소에 누적 (제거한 0의 갯수)
- 0을 제거한 문자열의 길이 : 문자열의 길이 - 0의 갯수
- 문자열의 길이를 2진법으로 변환함
- 변환 후 정답 배열의 첫번째 요소에 1을 누적 (변환 횟수)
다른 사람의 문제 풀이
function solution(s) {
var answer = [0,0];
while(s.length > 1) {
answer[0]++;
answer[1] += (s.match(/0/g)||[]).length;
s = s.replace(/0/g, '').length.toString(2);
}
return answer;
}