728x90
반응형
https://www.acmicpc.net/problem/5582
1. Logic
LIS약간 변형?
str1과 str2의 문자가 같으면 이전최대길이에 +1을 해준다!
2. Code
#include<bits/stdc++.h>
using namespace std;
int dp[4001][4001];
string str1, str2;
int solve(int s1, int s2) {
if(s1 == str1.size() || s2 == str2.size()) return 0;
int &ret = dp[s1][s2];
if(ret != -1) return ret;
ret = 0;
if(s1 < str1.length()) {
ret = max(ret, solve(s1 + 1, s2));
}
if(s2 < str2.length()) {
ret = max(ret, solve(s1, s2 + 1));
}
if(str1[s1] == str2[s2]) {
cout << s1 << " " << s2 << " " << ret << "\n";
ret = max(ret, solve(s1 + 1, s2 + 1) + 1);
}
return ret;
}
int main() {
memset(dp, -1, sizeof(dp));
cin >> str1 >> str2;
cout << solve(0, 0);
}
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 14503 로봇 청소기 C++ :: DFS & Graph & Implementation (0) | 2023.10.31 |
---|---|
[백준/Baekjoon] 15988 1, 2, 3 더하기 3 C++ :: Dynamic Programming (0) | 2023.10.31 |
[백준/Baekjoon] 2175 여행 C++ :: Dynamic Programming (0) | 2023.10.26 |
[백준/Baekjoon] 9657 돌 게임 3 C++ :: Dynamic Programming (0) | 2023.10.26 |
[백준/Baekjoon] 2253 점프 C++ :: Dynamic Programming (0) | 2023.10.24 |