문자열에서 0을 제거해주는 함수, 이진수로 표현해주는 함수 2개를 각각 만들어서 해결했습니다.
function deleteZero(str) {
let newStr = '';
let count = 0;
for (let i = 0; i < str.length; i++){
if(str[i] === '0'){
count = count + 1;
continue;
}
newStr = newStr + str[i];
}
return [newStr, count]
}
function makeBinary(str) {
let length = str.length;
let rest = '';
while(length > 1) {
rest = rest + String(length % 2);
length = Math.trunc(length / 2);
}
const binary = String(length) + rest.split('').reverse().join('');
return binary;
}
function solution(s) {
let input = s;
let binaryChangeCount = 0;
let zeroDeleteCount = 0;
while(input !== '1'){
const [newStr, zeroCount] = deleteZero(input);
input = newStr;
zeroDeleteCount = zeroDeleteCount + zeroCount;
const binary = makeBinary(input);
binaryChangeCount = binaryChangeCount + 1;
input= binary;
}
return [binaryChangeCount, zeroDeleteCount];
}
'개발 > 코딩테스트' 카테고리의 다른 글
[백준] 스타트와 링크 - 14889 (0) | 2023.11.25 |
---|---|
[백준] 블랙잭 - 2798 (0) | 2023.11.23 |
[프로그래머스] [3차] n진수 게임 (1) | 2023.11.13 |
[프로그래머스] 택배상자 (0) | 2023.11.11 |
[프로그래머스] 뒤에 있는 큰 수 찾기 (0) | 2023.11.09 |