
난이도 : Level 2
정답률: 68%
▶ 문제


▶ 풀이
0에서 부터 시작해 에너지가 몇 개 달지 생각하지 말고 N 부터 시작해 n을 빼가며 n 을 0으로 만들면 된다.
function solution(n)
{
var ans = 0;
while(n > 0) {
if(n % 2 !== 0) {
n -= 1;
ans++;
}
n /= 2;
}
return ans;
}
▶ 다른 사람의 풀이
function solution(n){
if(n === 1) return 1;
const nArr = Array.from(n.toString(2));
return nArr.reduce((a,b)=>(+a)+(+b));
}
이진수로 푸는 방법.
어떠한 수를 2로 나누고, 그 몫을 또 2로 계속해서 나누면서 나오는 나머지들의 모든 합은
어떠한 수를 이진수로 변환한 수의 1의 개수와 같다는 것을 이용하여 해결한 것라고 한다. 천잰가
'코테' 카테고리의 다른 글
| [Algorithm] 로또의 최고 순위와 최저 순위 - JavaScript (0) | 2024.03.05 |
|---|---|
| [Algorithm] 이중우선순위큐 - JavaScript (0) | 2024.03.04 |
| [Algorithm] 멀리뛰기 - JavaScript (0) | 2024.02.28 |
| [Algorithm] 귤 고르기 - JavaScript (0) | 2024.02.26 |
| [Algorithm] 행렬의 곱셈 - JavaScript (0) | 2024.02.24 |