File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * ๋ฌธ์ ์ค๋ช
3+ * - mํ๊ณผ n์ด์ ๊ทธ๋ํ์์ ์ค๋ฅธ์ชฝ ์๋์ ๋๋ฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ฐ์ง์
4+ * - ์๋, ์ค๋ฅธ์ชฝ์ผ๋ก๋ง ์ด๋ ๊ฐ๋ฅ
5+ *
6+ * ์์ด๋์ด
7+ * 1) DP
8+ * - ์ฒซ๋ฒ์งธ ํ, ์ฒซ๋ฒ์งธ ์ด์ ์ ์ธํ๊ณ ๋์๋ (m - 1)๋ฒ ์๋ + (n - 1)๋ฒ ์ค๋ฅธ์ชฝ์ ๋ํ ๊ฐ์ด ํ์ฌ ์์น์ ์ฌ ์ ์๋ ๋ฐฉ๋ฒ์.
9+ * - ์ ๋ถ ๊ฑฐ์น๋ค์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋์ ๊ฐ์ ๋ฐํํ๋ฉด ์ ๋ต
10+ * 2) ์กฐํฉ -> factorial์ ๊ฒฝ์ฐ Maximum call stack size exceed ๋ฐ์
11+ * - ์๋๋ก ์ด๋ ๊ฐ๋ฅํ ์(m-1), ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ ๊ฐ๋ฅํ ์ (n-1)์ ์กฐํฉ
12+ * - (m + n - 2)! / (m - 1)! * (n - 1)!
13+ */
14+ function uniquePaths ( m : number , n : number ) : number {
15+ const dp = Array ( m ) . fill ( Array ( n ) . fill ( 1 ) ) ;
16+
17+ for ( let r = 1 ; r < m ; r ++ ) {
18+ for ( let c = 1 ; c < n ; c ++ ) {
19+ dp [ r ] [ c ] = dp [ r - 1 ] [ c ] + dp [ r ] [ c - 1 ] ;
20+ }
21+ }
22+
23+ return dp [ m - 1 ] [ n - 1 ] ;
24+ }
25+
26+ /**
27+ * factorial ํ์ด -> ์๋ฌ๋ฐ์
28+ *
29+ function uniquePaths(m: number, n: number): number {
30+ function factorial(n: number) {
31+ if (n === 1) return 1;
32+
33+ return n * factorial(n - 1);
34+ }
35+
36+ return factorial(m + n - 2)! / (factorial(m - 1) * factorial(n - 1));
37+ }
38+ */
You canโt perform that action at this time.
0 commit comments