코테

[Algorithm] 점프와 순간 이동 - JavaScript

뚜따따 2024. 2. 29. 15:06

프로그래머스 - 점프와 순간 이동

난이도 : 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의 개수와 같다는 것을 이용하여 해결한 것라고 한다. 천잰가