๐ 12 - ์กฐํฉ์ ๊ฒฝ์ฐ ์(๋ฉ๋ชจ์ด์ ์ด์ )
nCr = n! / (n - r)!r! ๋ก ๊ณ์ฐํ๋ค. ํ์ง๋ง ์ด ๊ณต์์ ์ฐ์ง ์๊ณ ๋ค์ ๊ณต์์ ์ฌ์ฉํ์ฌ ์ฌ๊ท๋ฅผ ์ด์ฉํด ์กฐํฉ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
์
๋ ฅ์ค๋ช
์ฒซ์งธ ์ค์ ์์ฐ์ n(3<=n<=33)๊ณผ r(0<=r<=n)์ด ์
๋ ฅ๋๋ค.
์ถ๋ ฅ์ค๋ช
์ฒซ์งธ ์ค์ ์กฐํฉ์๋ฅผ ์ถ๋ ฅํ๋ค.
์
๋ ฅ์์ 1
5 3
์ถ๋ ฅ์์ 1
10
์
๋ ฅ์์ 2
33 19
์ถ๋ ฅ์์ 2
818809200
์กฐํฉ์ ํน์ง
๋จผ์ ์กฐํฉ์ด๋โ ์๋ก ๋ค๋ฅธ n๊ฐ์ ์์๋ฅผ ๊ฐ์ง๋ ์ด๋ค ์งํฉ์์ ์์์ ์๊ด์์ด r๊ฐ์ ์์๋ฅผ ์ ํํ๋ ๊ฒ
ex 1) n = 3, r = 3
1๏ธโฃ 3๊ฐ ์ค์์ 3๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ์๋ 1๊ฐ์ง์ด๋ฏ๋ก n๊ณผ r์ด ๊ฐ์ ๊ฒฝ์ฐ์ ์กฐํฉ ์๋ 1์ด๋ค.
ex 2) n = 3, r = 0
2๏ธโฃ 3๊ฐ ์ค์์ 0๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ์๋ 1๊ฐ์ง์ด๋ฏ๋ก r์ด 0์ผ ๊ฒฝ์ฐ์ ์กฐํฉ ์๋ 1์ด๋ค.
๐ค ๋์ ํ์ด ๋ฐฉ๋ฒ
๊ณต์ ๊ทธ๋๋ก ์ฌ๊ท๋ฅผ ์ด์ฉํด ๋ฌธ์ ํด๊ฒฐ.. ํ์ง๋ง n๊ณผ r์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์๋๊ฐ ๋ง์ด ๋๋ ค์ง๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค.
- ์กฐํฉ์ ํน์ง์ ์ํด r์ด 0์ด๊ฑฐ๋ n๊ณผ ๊ฐ์ ๊ฒฝ์ฐ 1์ return ํ๋ค.
function solution(n, r) {
let answer;
function DFS(n, r) {
if (r === 0 || n === r) return 1;
else return DFS(n - 1, r - 1) + DFS(n - 1, r));
}
answer = DFS(n, r);
return answer;
}
console.log(solution(33, 19));
๐ ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ
๊ฐ์ฌ๋์ ์๋๊ฐ ๋๋ ค์ง๋ ๋ฌธ์ ์ ์ ๋ฉ๋ชจ์ด์ ์ด์
์ ์ด์ฉํด ํด๊ฒฐ๐ 2์ฐจ์ ๋ฐฐ์ด์ n๊ณผ r์ ๋ํ ์กฐํฉ ์๋ฅผ ์ ์ฅํด๋๊ณ ์ฌ๊ท๋ฅผ ๋๋ฉด์ n๊ณผ r์ ๋ํ ์กฐํฉ ์๊ฐ ๋ฐฐ์ด์ ์ด๋ฏธ ์ ์ฅ๋์ด ์๋ค๋ฉด ์ฌ๊ท๋ฅผ ๋ฉ์ถ๊ณ ๋ฐฐ์ด์์ ํด๋น ์กฐํฉ ์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ด๋ค. ๋ค์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ดํดํ๊ธฐ ์์ํ ๊ฒ์ด๋คโ
ํ๋์์ ๋ณด๋ฉด n์ด 2์ด๊ณ r์ด 1์ธ ๊ฒฝ์ฐ๊ฐ ์ด๋ฏธ ์์์ ํ ๋ฒ ๋์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ n ํ r ์ด์ ์กฐํฉ ์๊ฐ ์ ์ฅ๋์ด ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ ์ด์ ์ฌ๊ท๋ฅผ ๋์ง ์๊ณ ๋ฐฐ์ด์์ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ์๋ ์ธก๋ฉด์์ ๋ง์ด ํฅ์๋๋ค.
function solution(n, r) {
let answer;
let dy = Array.from(Array(35), () => Array(35).fill(0));
function DFS(n, r) {
if (dy[n][r] > 0) return dy[n][r];
if (r === 0 || n === r) return 1;
else return (dy[n][r] = DFS(n - 1, r - 1) + DFS(n - 1, r));
}
answer = DFS(n, r);
return answer;
}
console.log(solution(5, 3));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 8] 14 - ์กฐํฉ ๊ตฌํ๊ธฐ (0) | 2022.11.12 |
---|---|
[JavaScript/section 8] 13 - ์์ด ์ถ์ธกํ๊ธฐ (0) | 2022.11.10 |
[JavaScript/section 8] 11 - ํฉํ ๋ฆฌ์ผ (0) | 2022.11.07 |
[JavaScript/section 8] 10 - ์์ด ๊ตฌํ๊ธฐ (0) | 2022.11.06 |
[JavaScript/section 8] 09 - ๋์ ๊ตํ (0) | 2022.11.05 |