cache[i][j]-> i,j이전까지의 LCS를 의미한다. i,j가 일치하는지 확인하고 일치하면 cache[i + 1][j + 1] 는 cache[i][j] 보다 1 길게 저장해주고 아니라면cache[i + 1][j] cache[i][j + 1] 둘 중에 하나를 저장해주면 된다.
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string A, B;
int cache[1002][1002];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> A >> B;
for(int i=0;i<=A.length();i++)
for (int j = 0; j <= B.length(); j++)
{
if (A[i] == B[j])
{
cache[i + 1][j + 1] = cache[i][j] + 1;
}
else
cache[i + 1][j + 1] = max(cache[i + 1][j], cache[i][j + 1]);
}
cout << cache[A.length() ][B.length() ];
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 14503 로봇 청소기 C++ (0) | 2022.12.29 |
---|---|
[백준] 6236 용돈 관리 c++ (0) | 2022.09.22 |
[백준] 11052 카드 구매하기 c++ (1) | 2022.09.11 |
[백준] 9655 돌 게임 (0) | 2022.09.10 |
[백준] 14888연산자 끼워넣기 (0) | 2022.09.05 |