[알고리즘] 최장 공통 부분 수열(LCS)
최장 공통 부분 수열(LCS)
ABCBDAB, BDCABA의 최장 공통 부분 수열의 길이를 구하시오.
나의 풀이
function LCS(str1, str2) {
let str1Len = str1.length;
let str2Len = str2.length;
let result = new Array(str1Len+1).fill([])
for (let i = 0; i <= str1Len; i++) {
for (let j = 0; j <= str2Len; j++) {
if (i === 0 || j === 0) result[i][j] = 0;
else if (str1[i - 1] === str2[j - 1]) result[i][j] = result[i - 1][j - 1] + 1;
else result[i][j] = Math.max(result[i - 1][j], result[i][j - 1]);
}
}
return result[str1Len][str2Len];
}
console.log(LCS('ABCBDAB', 'BDCABA'));