๐Ÿ”’Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ’€์ด(js) > ์ ํ”„์™€ ์ˆœ๊ฐ„์ด๋™(lv2)

devWarrior 2023. 6. 25. 21:00

๋ฌธ์ œ ๐Ÿ”ฝ

https://school.programmers.co.kr/learn/courses/30/lessons/12980

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋‹ค๋ฅธ์‚ฌ๋žŒ ํ’€์ด ๐Ÿ”ฝ

function solution(n)
{
    if(n == 1) return 1;

    var battery = 0;
    // n์„ 2๋กœ ๋‚˜๋ˆ ๊ฐ€๋ฉฐ ๋‚˜์˜ค๋Š” ๋‚˜๋จธ์ง€์˜ ํ•ฉ
    while(n>0) {
        battery += n%2;
        n = Math.floor(n/2);
    }

    return battery;
}

๋‚ดํ’€์ด๐Ÿ”ฝ

1. ์„ฑ๊ณต โญ• 

function solution(n)
{
    let answer = 0;

    while(1){
        if(n===1){
            ++answer
            break;
        }
        if(n%2===1){
            n=(n-1)/2
            ++answer;
        }else{
            n=n/2
        }
    }
    return answer;
}

๋А๋‚€์ ๐Ÿ”ฝ

์ˆœ๊ฐ„์ธ๋™์€ x2๋ฅผ ํ•˜๋ฉด์„œ ์›€์ง์ด๊ณ  ์ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ฃผ์–ด์ง„ n์„ 2๋กœ ๋‚˜๋ˆ ์„œ ๋–จ์–ด์ง„๋‹ค๋ฉด ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ์—†์ด ๊ทธ ์ „๋‹จ๊ณ„๋กœ ์›€์ง์ผ์ˆ˜ ์žˆ๋‹ค

๋งŒ์•ฝ n์ด 2๋กœ ๋‚˜๋ˆด์„ ๋•Œ 1๋กœ ๋–จ์–ด์ง„๋‹ค๋ฉด ๋ฐฐํ„ฐ๋ฆฌ 1๋ฅผ ์†Œ๋ชจํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ตœ์†Œํ•œ์˜ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋Ÿ‰์„ ๋„์ถœ ํ–ˆ๋‹ค.