https://www.acmicpc.net/problem/9251
더보기
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
int n = a.length();
int m = b.length();
vector<vector<int> > dp;
dp.resize(n + 1);
dp[0].resize(m + 1);
for (int i = 1; i <= n; i++) {
dp[i].resize(m + 1);
for (int j = 1; j <= m; j++) {
if (a[i-1] == b[j-1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
}
else {
dp[i][j] = (dp[i - 1][j] > dp[i][j - 1] ? dp[i - 1][j] : dp[i][j - 1]);
}
}
}
/*for (int i = 1; i <= n;i++) {
for (int j = 1; j <= m;j++) {
cout << dp[i][j] << " ";
}
cout << endl;
}*/
cout << dp[n][m];
return 0;
}
'Algorithm > Algorithm 문제 풀이' 카테고리의 다른 글
[BAE/<JOON> 문제풀이] 2167. 배열의 합 (DP.025) (0) | 2020.05.02 |
---|---|
[BAE/<JOON> 문제풀이] 2294. 동전 2 (DP.023) (0) | 2020.05.02 |
[BAE/<JOON> 문제풀이] 11055. 가장 큰 증가 부분 수열 (DP.021) (0) | 2020.05.01 |
[BAE/<JOON> 문제풀이] 1699. 제곱수의 합 (DP.020) (0) | 2020.04.30 |
[BAE/<JOON> 문제풀이] 11057. 오르막수 (DP.019) (0) | 2020.04.29 |