반응형
문제 설명
- 0과 1로 이루어진 문자열 x를 매개변수로 주어진다
- 이진 변환이란 다음과 같다
- 문자열 x의 모든 0을 제거
- x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꾼다
- 예를 들면, x = "0111010" → 이진 변환
- x = "0111010"
- x = "1111"
- x = "100"
- ...
- 위와 같은 변환을 "1"이 될 때까지 반복하여 이진변환의 횟수와 0을 제거한 개수를 배열로 반환하는 solution 함수를 완성하시오.
제한사항
- s의 길이는 1 이상 150,000 이하입니다
- s에는 "1"이 최소 하나 이상 포함되어 있습니다
입출력 예시
전체 코드
function solution(s) {
let countBinary = 0;
let countZero = 0;
while (1) {
for (let i = 0; i < s.length; i++) {
if (s[i] == "0") countZero++;
}
let tempStr = [...s].map((item) => item.replace("0", "")).join("");
let tempArr = [];
let length = tempStr.length;
while (length > 0) {
tempArr.push(length % 2);
length = parseInt(length / 2);
}
countBinary++;
s = tempArr.join("");
if (s.length === 1 && s[0] === "1") break;
}
return [countBinary, countZero];
}
'Programmers' 카테고리의 다른 글
(Programmers) [Lv. 0] 문자 반복 출력하기 (0) | 2023.02.09 |
---|---|
(Programmers) [Lv. 0] 배열 짜르기 (0) | 2023.02.09 |
(Programmers) [Lv. 2] 올바른 괄호 (0) | 2023.02.08 |
(Programmers) [Lv. 1] 약수의 개수와 덧셈 (0) | 2023.02.08 |
(Programmers) [Lv. 1] 내적 (0) | 2023.02.08 |