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