Skip to content

Commit 7409de1

Browse files
committed
feat(soobing): week8 > longest-common-subsequence
1 parent b8a8823 commit 7409de1

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

longest-common-subsequence/soobing.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* 문제 설명
3+
* - 두 문자열의 가장 긴 공통 부분 문자열의 길이를 반환
4+
* - 대표적인 DP 문제
5+
*
6+
* 아이디어
7+
* 1) 브루투포스 O(n^2)
8+
* 2) DP O(n^2)
9+
* - dp[i][j]를 만들어서 text1[i]와 text2[j]가 같은 경우 dp[i][j] = dp[i-1][j-1] + 1
10+
* - 다른 경우 dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1])
11+
*/
12+
13+
function longestCommonSubsequence(text1: string, text2: string): number {
14+
const dp = Array.from({ length: text1.length + 1 }, () =>
15+
Array(text2.length + 1).fill(0)
16+
);
17+
18+
for (let i = 1; i <= text1.length; i++) {
19+
for (let j = 1; j <= text2.length; j++) {
20+
if (text1[i - 1] === text2[j - 1]) {
21+
dp[i][j] = dp[i - 1][j - 1] + 1;
22+
} else {
23+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
24+
}
25+
}
26+
}
27+
return dp[text1.length][text2.length];
28+
}

0 commit comments

Comments
 (0)