쾌락없는 책임 (공부)/알고리즘 문제풀이

[Algorithm] 백준 5582 공통 부분 문자열 - C++, LCS, DP

허스크 2023. 6. 11. 13:43
반응형
 

5582번: 공통 부분 문자열

두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들

www.acmicpc.net

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

const int MAX = 4001;
int LCS[MAX][MAX];
string s1, s2;

int main(){
    int maxLength = -1;

    cin >> s1;
    cin >> s2;

    for(int i = 1; i <= s1.size(); i++){
        for(int j = 1; j <= s2.size(); j++){
            LCS[i][j] = (s1[i-1] == s2[j-1]) ? LCS[i-1][j-1] + 1 : 0;
            maxLength = max(LCS[i][j], maxLength);
        }
    }

    cout << maxLength << '\n';
}

기본적인 공통 부분 문자열 문제였습니다. 알고리즘을 이해한 뒤 풀이하면 쉽게 풀이할 수 있습니다.

반응형