코딩캠프/BOJ
[5582] 공통 부분 문자열
by 코곰_
2024. 2. 23.
// 5582 공통 부분 문자열
// dp
#include<iostream>
#include<cstdio>
#include<string.h>
#define MAX 4001 // 최대 4000글자
using namespace std;
int dp[MAX][MAX]; //
int max_len = 0;
string a, b;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// 배열 초기화
memset(dp, 0, sizeof(dp));
cin >> a;
cin >> b;
// dp
for(int i=1; i<=a.length(); i++){
for(int j=1; j<=b.length(); j++){
if(a[i-1] == b[j-1]){ // 같으면 -> 이전 값 + 1
dp[i][j] = dp[i-1][j-1] + 1;
}
else{ // 다르면 0으로 초기화
dp[i][j] = 0;
}
}
}
for(int i=1; i<=a.length(); i++){
for(int j=1; j<=b.length(); j++){
if(max_len < dp[i][j]) max_len = dp[i][j]; // 최대값 갱신
}
}
printf("%d\n", max_len);
return 0;
}