๐ฆ9251: lcs
[์๊ณ ๋ฆฌ์ฆ ํ์ด] ๊ฐ๋๊ท
Reviewed by Kade Kang (devkade12@gmail.com)
Reviewed:: 2024-01-15
๋ฌธ์ ํ์ธํ๊ธฐ
ํ์ด
#include <bits/stdc++.h>
using namespace std;
#define endl '\n';
int lcs[1005][1005];
int main(){
string source, target;
char res[1005]; // ๊ฒฐ๊ณผ ์ ์ฅ
int len = 0;
cin >> source >> target;
for(int i = 1; i <= source.length(); i++){
for(int j = 1; j <= target.length(); j++){
if(source[i-1] == target[j-1]) // ๋ฌธ์์ด ์ธ๋ฑ์ค์ ์์๋ 0๋ถํฐ ์์ํ๋ค.
lcs[i][j] = lcs[i-1][j-1] + 1; // ๊ฐ์ผ๋ฉด ์ข๋๊ฐ+1๋ก ๊ตฌ๋ถํ๋ค.
else
lcs[i][j] = max(lcs[i-1][j], lcs[i][j-1]);
}
}
int i = source.length();
int j = target.length();
while(true){
if(lcs[i][j] == 0) break;
if(lcs[i][j] != lcs[i-1][j] && lcs[i][j] != lcs[i][j-1]){
res[len++] = source[j-1];
i = i - 1;
j = j - 1;
continue;
}
else{
if(lcs[i][j] == lcs[i-1][j]) i = i-1;
else if(lcs[i][j] == lcs[i][j-1]) j = j-1;
}
}
cout << len << endl;
return 0;
}