프로그래머스 Level 2 - 이진 변환 반복하기
📌 생각한 풀이 방법
- 연산 횟수를 count, 삭제된 0의 갯수를 deletedZeros에 저장한다.
- 해당 숫자의 0만 저장한 withZero와 1만 저장한 withoutZero로 분리한다.
- withZero만큼 deletedZeros를 증가시키고, withoutZero 값으로 다음 연산 값을 준비한다.
- 매 연산마다 count를 증가시키고, 1이 될때까지 해당 연산을 반복한다.
📌 풀이
function solution(s) {
let count = 0;
let deletedZeros = 0;
while (s.length !== 1) {
s = s.split("").map((item) => +item);
let withZero = s.filter((number) => number === 0);
let withoutZero = s.filter((number) => number === 1);
deletedZeros += withZero.length;
s = withoutZero.length.toString(2);
count++;
}
return [count, deletedZeros];
}