[알고리즘] 최장 공통 부분 수열(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'));

제로초
알고리즘 설명