Algorithm/Algorithm 문제 풀이
[BAE/<JOON> 문제풀이] 5582. 공통 부분 문자열
폭풍저그머성찡
2020. 6. 6. 12:59
https://www.acmicpc.net/problem/5582
5582번: 공통 부분 문자열
문제 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예
www.acmicpc.net
LCS 문제인줄 알고 풀었는데 연속된 문자열만 인정하는 문제였다. LCS 하위호환 문제같다.
더보기
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int dp[4001][4001];
int main()
{
string s1, s2;
cin >> s1 >> s2;
int l1 = s1.length();
int l2 = s2.length();
int mx = 0;
for (int i = 1; i <= l1; i++) {
for (int j = 1; j <= l2; j++) {
if (s1[i - 1] == s2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
if (mx < dp[i][j]) mx = dp[i][j];
}
}
}
cout << mx;
return 0;
}