๐Ÿ”’Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ’€์ด(js) > ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ(lv2)

devWarrior 2023. 6. 23. 22:00

๋ฌธ์ œ ๐Ÿ”ฝ

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

 

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

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

programmers.co.kr

 

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

function solution(n,a,b)
{
    let answer = 0;
    while(a !== b) {
        a = Math.ceil(a/2);
        b = Math.ceil(b/2);
        answer++;
    }

    return answer;
}

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

1. ์‹คํŒจ โŒ => ๋…ผ๋ฆฌ ์˜ค๋ฅ˜

function solution(n,a,b)
{
    var answer = 0;
    let count = Math.log(n)/Math.log(2)
    let personCount = n
    
    while(1){
        if((personCount/2+0.5-a)*(personCount/2+0.5-b)<0){
            answer = count;
            break;
        }else{
            personCount=personCount/2
            answer = --count;
        }
    }
    return answer;
}

2. ์„ฑ๊ณต โญ• 

function solution(n,a,b)
{
    var answer = 0;
    let round=1;
    while(1){
        if(Math.abs(a-b)===1&&Math.min(a,b)%2===1){
            answer = round   
            break;
        }
        a=Math.ceil(a/2)
        b=Math.ceil(b/2)
        ++round;
    }
    return answer;
}

๋Š๋‚€์ ๐Ÿ”ฝ

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง„ํ–‰ ํ•  ๋•Œ count๋ฅผ ์œ„์—์„œ ๋ถ€ํ„ฐ ์žฌ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํƒ์ƒ‰ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค. ์ผ๋‹จ ํ•ด๋‹น๋ผ์šด๋“œ์—์„œ ๋งŒ๋‚  ์กฐ๊ฑด์„ ๊ตฌํ•œ๋’ค ์•„๋‹ ์‹œ ๋ผ์šด๋“œ๋ฅผ ์˜ฌ๋ฆฌ๋ฉด์„œ counting ํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ง„ํ–‰ํ•˜๋‹ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.