ํ์ด ๋ฐฉ๋ฒ
์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด์๊ธฐ์ ์กฐํฉ์ ๋ ์ฌ๋ ธ์ต๋๋ค
๋ ์์ 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;
}
'๐ง ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์ ๋ณํํ๊ธฐ JS (1) | 2024.01.11 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฐฐ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐํ๊ธฐ JS (0) | 2024.01.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ JS (1) | 2024.01.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌด์ธ๋ ์ฌํ JS (0) | 2024.01.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํธํ ๋์ค JS (1) | 2024.01.05 |