문 제
소 스 코 드
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string first;
std::string second;
std::cin >> first >> second;
int **dp{ new int*[first.length() + 1] };
for (int i = 0; i <= first.length(); ++i) {
dp[i] = new int[second.length() + 1];
std::fill_n(dp[i], second.length(), 0);
}
for (int i = 1; i <= first.length(); ++i) {
for (int j = 1; j <= second.length(); ++j) {
if (first[i - 1] == second[j - 1])
dp[i][j] = dp[i - 1][j - 1] + 1;
else
dp[i][j] = std::max(dp[i - 1][j], dp[i][j - 1]);
}
}
std::cout << dp[first.length()][second.length()];
for (int i = 0; i <= first.length(); ++i) delete[] dp[i];
delete[] dp;
return 0;
}
풀 이
-
LCS 알고리즘을 통하여 구현
결 과 값
문 제 출 처
문제 링크 : [ BAEKJOON ] : https://www.acmicpc.net/problem/9251
'[ ALGORITHM ] > [ 백 준 ]' 카테고리의 다른 글
[BAEKJOON] 12865번 평범한 배낭 (0) | 2020.07.05 |
---|---|
[BAEKJOON] 1912번 연 속 합 (0) | 2020.07.04 |
[BAEKJOON] 2565번 전깃줄 (0) | 2020.07.02 |
[BAEKJOON] 11054번 가장 긴 바이토닉 부분 수열 (0) | 2020.07.01 |
[BAEKJOON] 11053번 가장 긴 증가하는 부분 수열 (0) | 2020.07.01 |