반응형
첫번째 코드
이진수로 변환하는 함수를 구현한 후 해당 함수를 이용하여 0의 개수와 이진 변환 횟수를 구한다.
function binary(num){ // 이진 변환 함수
let bin = [];
while(num >= 0){
if(num <= 1) {bin.unshift(num); break;}
bin.unshift(num % 2);
num = parseInt(num / 2);
}
return bin.join("");
}
function solution(s) {
let answer = [0,0];
while(s !== "1"){
answer[1] += Array.from(s).filter(x => x === "0").length;
s = binary(s.replaceAll("0","").length);
answer[0] += 1;
}
return answer;
}
두번째 개선 코드
toString(2)를 활용하여 간단하게 이진수로 변환해주는 방식을 채택했다.
function solution(s) {
let answer = [0,0];
while(s !== "1"){
answer[0] += 1;
answer[1] += [...s].filter(x => x === "0").length;
s = s.replaceAll("0", "").length.toString(2);
}
return answer;
}
두 방식 모두 문제의 s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 조건에 따라 while문 조건을 설정하였다.
while(s !== "1")
반응형
'자료구조 & 알고리즘' 카테고리의 다른 글
프로그래머스 짝지어 제거하기 - 자바스크립트 풀이 (0) | 2024.12.01 |
---|---|
프로그래머스 숫자의 표현 - 자바스크립트 풀이 (0) | 2024.11.27 |
프로그래머스 JadenCase 문자열 만들기 - 자바스크립트 풀이 (0) | 2024.11.24 |
프로그래머스 최솟값 만들기 - 자바스크립트 코드 (0) | 2024.11.24 |
프로그래머스 로또의 최고 순위와 최저 순위 - 자바스크립트 풀이 (0) | 2024.11.24 |