Skip to content

Commit d72efff

Browse files
committed
Unique Paths Solution
1 parent 2adcbc5 commit d72efff

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

โ€Žunique-paths/clara-shin.jsโ€Ž

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* DP๋กœ ํ’€ ์ˆ˜๋„ ์žˆ๊ณ , ์กฐํ•ฉ์œผ๋กœ ํ’€ ์ˆ˜๋„ ์žˆ์Œ
3+
*
4+
* ์กฐํ•ฉ: (m+n-2)C(n-1)
5+
* n๊ฐœ์˜ ์›์†Œ ์ค‘์—์„œ r๊ฐœ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ (์ˆœ์„œ๊ณ ๋ ค ์•ˆํ•จ)
6+
* nCr = n! / (r!(n-r)!)
7+
* ์žฅ์ : ๊ฒฉ์ž์˜ ๊ฐ ์œ„์น˜๊นŒ์ง€ ๊ฒฝ๋กœ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ์•Œ์ˆ˜ ์žˆ์–ด์„œ ์œ ์—ฐํ•จ, DP๋ณด๋‹ค ์‹œ๊ฐ„๋ณต์žก๋„ ๋‚ฎ์Œ
8+
* ๋‹จ์ : ํฐ ์ˆ˜์˜ ํŒฉํ† ๋ฆฌ์–ผ์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
9+
*
10+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(min(m,n)) โžก๏ธ min(m-1, n-1)๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„ ๋•Œ๋ฌธ์—
11+
* ๊ณต๊ฐ„๋ณต์žก๋„: O(1) โžก๏ธ ์ถ”๊ฐ€ ๋ฐฐ์—ด ์‚ฌ์šฉ ์•ˆํ•จ, ๋‹จ์ผ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ
12+
*/
13+
/**
14+
* @param {number} m
15+
* @param {number} n
16+
* @return {number}
17+
*/
18+
var uniquePaths = function (m, n) {
19+
// ์ด ์ด๋™ ํšŸ์ˆ˜: ์˜ค๋ฅธ์ชฝ (n-1)๋ฒˆ + ์•„๋ž˜์ชฝ (m-1)๋ฒˆ = m+n-2
20+
let N = m + n - 2;
21+
22+
// ์•„๋ž˜์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ํšŸ์ˆ˜ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ํšŸ์ˆ˜ ์ค‘ ๋” ์ž‘์€ ๊ฐ’ ์„ ํƒ
23+
// ์กฐํ•ฉ ๊ณต์‹์—์„œ nCk = nCn-k ํŠน์„ฑ์„ ์ด์šฉํ•ด ๊ณ„์‚ฐ์„ ์ตœ์ ํ™”
24+
let k = Math.min(m - 1, n - 1);
25+
26+
// ๊ฒฐ๊ณผ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”
27+
let result = 1;
28+
29+
// ์กฐํ•ฉ ๊ณ„์‚ฐ: nCk = (n * (n-1) * ... * (n-k+1)) / (k * (k-1) * ... * 1) ๋ฐฉ์‹์œผ๋กœ ๊ณ„์‚ฐ
30+
for (let i = 1; i <= k; i++) {
31+
result *= N - (i - 1); // ๋ถ„์ž ๋ถ€๋ถ„: n, n-1, n-2, ..., n-k+1
32+
result /= i; // ๋ถ„๋ชจ ๋ถ€๋ถ„: k, k-1, k-2, ..., 1
33+
}
34+
35+
return result;
36+
};

0 commit comments

Comments
ย (0)