Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ผ์ด์ฌ (์กฐํฉ ํ์ด๊ณผ์ ) ๋ณธ๋ฌธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ผ์ด์ฌ (์กฐํฉ ํ์ด๊ณผ์ )
Jieunny 2023. 1. 18. 13:33๐ฃ ๋ฌธ์ ํ์ด์ ์์ JS๋ก ์กฐํฉ์ ๊ตฌํํ๋ ๊ณผ์ ์ ์์๋ณด์.
โ๏ธ ์กฐํฉ : ์๋ก ๋ค๋ฅธ n๊ฐ์ ๋ฌผ๊ฑด์์ ์์๋ฅผ ์๊ฐํ์ง ์๊ณ r๊ฐ๋ฅผ ํํ๋ ๊ฒ => nCr
โ๏ธ ๊ตฌํ ๊ณผ์ : ๋ฐฐ์ด์ ์ฒ์ ์์๋ถํฐ ํ๋์ฉ ๊ณ ์ ํ๊ณ , ๊ณ ์ ๋ ์์๋ฅผ ์ ์ธํ ์์๋ค ์ค์์ r-1๊ฐ๋ฅผ ์กฐํฉํด์ ๋ถ์ด๋ ๋ฐฉ๋ฒ
โ๏ธ ์ฌ๊ท์ ์ผ๋ก ํธ๋ ๊ฒ ์ข๋ค-> ์กฐํฉ์ ๊ตฌํ๋ ๊ณผ์ ์ ๊ณ์ ๋ฐ๋ณต๋๊ธฐ ๋๋ฌธ์!
๐ ๋ฌธ์
ํ๊ตญ์คํ๊ต์ ๋ค๋๋ ํ์๋ค์ ๊ฐ์ ์ ์ ๋ฒํธ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ์ด ํ๊ต ํ์ 3๋ช ์ ์ ์ ๋ฒํธ๋ฅผ ๋ํ์ ๋ 0์ด ๋๋ฉด 3๋ช ์ ํ์์ ์ผ์ด์ฌ๋ผ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 5๋ช ์ ํ์์ด ์๊ณ , ๊ฐ๊ฐ์ ์ ์ ๋ฒํธ๊ฐ ์์๋๋ก -2, 3, 0, 2, -5์ผ ๋, ์ฒซ ๋ฒ์งธ, ์ธ ๋ฒ์งธ, ๋ค ๋ฒ์งธ ํ์์ ์ ์ ๋ฒํธ๋ฅผ ๋ํ๋ฉด 0์ด๋ฏ๋ก ์ธ ํ์์ ์ผ์ด์ฌ์ ๋๋ค. ๋ํ, ๋ ๋ฒ์งธ, ๋ค ๋ฒ์งธ, ๋ค์ฏ ๋ฒ์งธ ํ์์ ์ ์ ๋ฒํธ๋ฅผ ๋ํด๋ 0์ด๋ฏ๋ก ์ธ ํ์๋ ์ผ์ด์ฌ์ ๋๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ ํ๊ตญ์คํ๊ต์์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ผ์ด์ฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ํ๊ตญ์คํ๊ต ํ์๋ค์ ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด number๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํ์๋ค ์ค ์ผ์ด์ฌ๋ฅผ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
โ๏ธ ํ์ด
function solution(number) {
let noOverlap = [];
let result = 0;
for(let i=0; i<number.length; i++){
if(noOverlap.includes(number[i]) === false){
noOverlap.push(number[i]);
}
}
let combinations = getCombinations(number, 3);
for(let i=0; i<combinations.length; i++){
let sum = 0;
for(let j=0; j<combinations[i].length; j++){
sum += combinations[i][j];
}
if(sum === 0){
result++;
}
}
return result;
}
const getCombinations = function (n, r) {
const results = [];
if (r === 1){
return n.map((el) => [el]);
}
n.forEach((fixed, index, origin) => {
const rest = origin.slice(index + 1);
const combinations = getCombinations(rest, r - 1);
const attached = combinations.map((el) => [fixed, ...el]);
results.push(...attached);
});
return results;
}
โฐ ๋ฐ๋ณต๋๋ ์๋ ์์ด์ผ ํ๋๊น ์ผ๋จ ๋ฐ์ ๋ฐฐ์ด์์ ์ค๋ณต๋๋ ์ซ์ ์ ๊ฑฐํด์ noOverlap ๋ฐฐ์ด ๋ง๋ค์ด์ฃผ๊ธฐ.
โฐ noOverlap ๋ฐฐ์ด์ getCombinations() ํจ์ ์ธ์๋ก ์ค์ 3๊ฐ ์กฐํฉ ๊ตฌํ๊ธฐ.
โฐ ๊ตฌํ ์กฐํฉ์์ ๊ฐ๊ฐ ๋ฐฐ์ด ์์ ๋ํ์ ๋ 0 ์ด๋๋ฉด ์ต์ข ๋ต์ธ result ++ ํด์ฃผ๊ธฐ.
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํฐ์ผ๋ชฌ (0) | 2023.01.19 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - 2016๋ (0) | 2023.01.19 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ต์์ง์ฌ๊ฐํ (0) | 2023.01.17 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์์ ์ํธ (0) | 2023.01.16 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ ์ซ์๋ ์ซ์ด (0) | 2023.01.16 |