function solution(n){
// n을 2로 나누었을 때 홀수가 나온 수 + 1(첫 한 칸)
let battery = 0;
// n이 2로 더 나뉘어지지 않을 때까지
while(n>=2){
// n의 값이 홀수일 경우
if(n%2 !== 0){
// 한칸 점프를 해야 하므로 전력 소모 1 추가, 남은 거리 n에서 1 제거
battery+=1;
n -= 1;
}
n = n/2
}
return battery + 1;
}
어떤 수를 2로 나누고, 해당 몫을 또 2로 나누면서 나오는 나머지들의 모든 핪은 해당 수를 이진수로 변환한 수의 1의 개수와 같다.
function solution(n){ if(n === 1) return 1; const nArr = Array.from(n.toString(2)); return nArr.reduce((a,b)=>(+a)+(+b)); }
function solution(n){ if(n == 1) return 1; let battery = 0; // n을 2로 나눠가며 나오는 나머지의 합 while(n>0) { battery += n%2; n = Math.floor(n/2); } return battery; }