728x90
programmers.co.kr/learn/courses/30/lessons/12904
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int solution(string s)
{
int answer=1;
int n = s.size();
vector<vector<bool>>check(n,vector<bool>(n,false));
for(int i=0; i<n; i++){
check[i][i]=true;
}
for(int i=0; i<n-1;i++){
if(s[i]==s[i+1]){
check[i][i+1]=true;
answer=2;
}
}
for(int k=3;k<=n; k++){
for(int i=0; i+k-1<n; i++){
int j = i+k-1;
if((check[i+1][j-1]==true) && (s[i]==s[j])){
check[i][j]=true;
answer = k;
}
}
}
return answer;
}
- 대표적인 DP 문제이다.
- 백준에서 비슷한 문제를 풀어서 금방 풀 수 있었음.