728x90
반응형
https://www.acmicpc.net/problem/5502
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int dp[5001][5001];
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
string s, r_s;
cin >> s;
r_s = s;
reverse(r_s.begin(), r_s.end());
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
if(s[i - 1] == r_s[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 << n - dp[n][n] << endl;
return 0;
}
해당 문제는 LCS와 연관이 있다.
1. 입력받은 문자열과 뒤집은 문자열과의 LCS 구하기
2. N - LCS 이 정답
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 1563번 개근상 (C++) (0) | 2023.01.22 |
---|---|
[BOJ] 5567번 결혼식 (C++) (1) | 2022.11.12 |
[BOJ] 12015번 가장 긴 증가하는 부분 수열 2 (C++) (0) | 2022.11.07 |
[BOJ] 11054번 가장 긴 바이토닉 부분 수열 (C++) (0) | 2022.11.07 |
[BOJ] 2156번 포도주 시식 (C++) (1) | 2022.11.05 |