알고리즘 문제 풀이
[백준] LCS - 9251번 최장 공통 부분 수열 (javascript)
딩신
2019. 8. 6. 12:17
let input = []
require('readline')
.createInterface(process.stdin, process.stdout)
.on('line', function(line) {
input.push(line.trim())
})
.on('close', function() {
const str1 = input[0].split('')
const str2 = input[1].split('')
const len = str1.length
const len2 = str2.length
// 2차원 배열 생성 // 0으로 초기화
const array = Array.from(Array(2000), () => Array());
for(let i = 0; i <= len; i++) {
for(let j = 0; j <= len2; j++) {
array[i][j] = 0
}
}
for(let i = 1; i <= len; i++) {
for(let j = 1; j <= len2; j++) {
if(str1[i - 1] === str2[j - 1]) array[i][j] = array[i - 1][j - 1] + 1
else array[i][j] = Math.max(array[i][j - 1],array[i - 1][j])
}
}
console.log(array[len][len2])
});
LCS 성공
시간 제한메모리 제한제출정답맞은 사람정답 비율
1 초 | 256 MB | 14225 | 6062 | 4474 | 42.025% |
문제
LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.
예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.
입력
첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.
출력
첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.