๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง  ์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹œ์†Œ ์ง๊ฟ JS

by megan07 2024. 1. 9.

๋ฌธ์ œ๋งํฌ

 

ํ’€์ด ๋ฐฉ๋ฒ•

์Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ๊ธฐ์— ์กฐํ•ฉ์„ ๋– ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค
๋‘ ์ˆ˜์˜ 2,3,4๋ฐฐ์ˆ˜ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๊ฐ™์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค
๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋น„์œจ์€ 2:3, 2:4, 3:2, 3:4, 4:2, 4:3
์Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋น„์œจ์— ๋Œ€ํ•œ ์ˆ˜๋ฅผ ์ฐพ์ง€ ์•Š๊ณ  ํŠน์ •์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํฐ ์ˆ˜๋งŒ ๊ตฌํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค

 

function solution(weights) {
    
    //์Œ์„ ๊ตฌํ•˜๋ผ = ์กฐํ•ฉ
    //๋‘ ์ˆ˜์˜ 2,3,4๋ฐฐ์ˆ˜ ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ ๊ฐ™์œผ๋ฉด ๋จ
    //๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋น„์œจ์€ 2:3, 2:4, 3:2, 3:4, 4:2, 4:3์ด์ง€๋งŒ
    //์Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํฐ ์ˆ˜๋งŒ ๊ตฌํ•˜๊ธฐ
    
    let cnt=0;
    const table = {};
    
    weights.forEach(w=>{
        table[w]=(table[w]||0)+1;
    });
    


    for(let key in table){
        
        //๊ฐ™์€ ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ nC2
        cnt+=table[key]*(table[key]-1)/2; 
        
        //์กฐํ•ฉ์ด๋‹ˆ๊นŒ ๋ชจ๋“  ๋น„์œจ์— ๋Œ€ํ•ด ๊ตฌํ•˜์ง€ ์•Š๊ณ  ๋” ํฐ ์ˆ˜์— ๋Œ€ํ•ด์„œ๋งŒ ๊ตฌํ•จ
        //2๋ฐฐ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ 4a=2b
        if(table[key*2]) 
            cnt+=table[key*2]*table[key];
        
        //3a=2b
        if(table[key/3*2])
            cnt+=table[key/3*2]*table[key];
        //4a=3b
        if(table[key/4*3])
            cnt+=table[key/4*3]*table[key];
    }
    
    
    return cnt;
    
}