백준 [9251] "LCS"

Kimbab1004·2024년 2월 22일
0

Algorithm

목록 보기
17/102

학교 알고리즘 수업때 학습했던 내용이였다. 하지만 그때 당시에는 이론적인 학습이 주로였기에 LCS(DP)문제를 직접적으로 해결하지는 않았었다. 그런 이유로 LCS라는 이름을 들었을때 해결법이 바로 떠오르지 않았지만 계속 문제를 풀어보니 어느샌가 문제 해결법이 떠올랐다.

#include <iostream>
#include <deque>
#include <string>
#include <sstream>
#include <vector>
#include <string>
#include <queue>
#include <algorithm>

using namespace std;
int dp[1002][1002] = { 0 };

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

    string a, b;

	cin >> a >> b;

	for (int i = 1; i <= a.length(); i++) {
		for (int j = 1; j <= b.length(); j++) {
			if (a[i - 1] == b[j - 1]) {
				dp[i][j] = dp[i - 1][j - 1] + 1;
			}
			else {
				dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
			}
		}
	}

	cout << dp[a.length()][b.length()];

	return 0;

}

0개의 댓글