작성일 : 2024.12.03
이진 변환 반복하기
문제 설명
이진수 문자열에 대해 다음과 같은 이진 변환을 반복적으로 수행합니다:
- 모든 0을 제거
- 남은 문자열의 길이를 2진수로 변환
이진 변환을 "1"이 될 때까지 반복하면서 다음을 계산합니다:
- 변환 횟수
- 제거된 0의 총 개수
예시
"0111010" -> "1111" (0 제거) -> "100" (길이 4의 이진수)
제한 조건
- 입력 문자열 s
- 길이: 1 ≤ length ≤ 150,000
- 최소 하나의 '1' 포함
- 0과 1로만 구성
해결 코드
function solution(s) {
var answer = [];
var removeZeroCount = 0; // 제거된 0의 개수
var removeZeroTime = 0; // 변환 횟수
while (s.length > 1) {
var result = [];
// 0 제거 과정
for (var i = 0; i < s.length; i++) {
if (s[i] == "1") {
result.push(s[i]);
} else {
removeZeroCount++;
}
}
removeZeroTime++;
// 길이를 2진수로 변환
s = result.length.toString(2);
}
answer = [removeZeroTime, removeZeroCount];
return answer;
}