본문 바로가기
알고리즘/백준

[백준] LCS c++

by 오오오니 2022. 9. 21.

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