Recent Posts
Notice
No Rules Rules
LCS (feat. 백준, 9251번) 본문
728x90
반응형
LCS
https://www.acmicpc.net/problem/9251
반응형
// woohyeon.kim
// https://www.acmicpc.net/problem/9251
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(NULL);
int dp[1001][1001] = { 0 };
string str1, str2;
cin >> str1 >> str2;
for (register int i = 1, j; i <= str1.size(); ++i)
for (j = 1; j <= str2.size(); ++j)
if (str1.at(i - 1) == str2.at(j - 1)) dp[i][j] = dp[i - 1][j - 1] + 1;
else dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]);
cout << dp[str1.size()][str2.size()];
return 0;
}
// *&)*@*
- 해당 문제는 최장 공통 부분수열. 즉, 이어있지 않고 부분적 조합으로 서로 동일한 문자열을 찾는 방법입니다.
- 이 문제에서 조금만 바꾸면 최장 공통 문자열. 즉, 이어진 문자열 중 서로 동일한 문자열을 찾는 방법입니다.
- 최장 공통 문자열의 경우, else 조건을 없애고 최대값을 구하면 해답이 됩니다.
아래는 LCS. 즉, 최장 공통 부분수열과 최장 공통 문자열을 설명한 링크입니다.
이해하기 쉽게 적혀있어 추천 드립니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
수열 (feat. 백준, 2559번) (0) | 2022.08.07 |
---|---|
구간 합 구하기 4 (feat. 백준, 11659번) (0) | 2022.08.06 |
신나는 함수 실행 (feat. 백준, 9184번) (0) | 2022.08.05 |
연산자 끼워넣기 (feat. 백준, 14888번) (0) | 2022.08.05 |
스도쿠 (feat. 백준, 2580번) (0) | 2022.08.05 |
Comments