Notice
Recent Posts
Recent Comments
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Today
Total
관리 메뉴

차차로그

[JS] Summer/Winter Coding(~2018) > 점프와 순간 이동 본문

코딩테스트

[JS] Summer/Winter Coding(~2018) > 점프와 순간 이동

차차한 2022. 9. 15. 15:31

function solution(n){
    var ans = 0;

    while(n > 1){
        
        if(n % 2 == 0){
            n /= 2;
        }else{
            n -= 1; 
            n /= 2;
            ans++;
        }
    }
    return ans + 1;
}

정답을 구하는 규칙이 N을 2로 계속 나누면서, 홀수가 나오면 1을 빼주는데 이때에만 카운트를 올려주고 최종적으로 그 카운트에 1을 더하면 정답이 나온다.

어떻게 풀긴 했지만 왜 이런 규칙으로 풀리게 됐는지는..잘 모르겠다 ㅠㅠ 

 

다른 사람 풀이

function solution(n){
    if(n === 1) return 1;
    const nArr = Array.from(n.toString(2));
    return nArr.reduce((a,b)=>(+a)+(+b));
}
// n = 5 -> [ '1', '0', '1' ]
// n = 6 -> [ '1', '1', '0' ]

n의 2진수에서 1을 더한 값이 정답과 같다는 규칙으로 풀어낸...

어떻게 이런 규칙을 찾을 수 있는건지 신기하다

Comments