#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int solution(string s)
{
int dp[2510][2510] = {0};
int Max;
// 길이 1
for(int i = 0; i < s.size(); i++)
{
dp[i][i] = 1;
Max = 1;
}
// 길이 2
for(int i = 0; i < s.size()-1; i++)
{
if(s[i] == s[i+1])
{
dp[i][i+1] = 1;
Max = 2;
}
}
// 길이 3 이상
for(int k = 2; k < s.size(); k++)
{
for(int i = 0; i <= s.size()-1-k; i++)
{
int j = i + k;
if(s[i] == s[j] && dp[i+1][j-1] == 1)
{
dp[i][j] = 1;
if(Max < k+1)
{
Max = k+1;
}
}
}
}
return Max;
}
|
cs |
'Programmers > Level 3' 카테고리의 다른 글
[프로그래머스 3] 거스름돈 (C/C++) (★) (0) | 2020.03.07 |
---|---|
[프로그래머스 3] 보행자 천국 (C/C++) (0) | 2020.03.07 |
[프로그래머스 3] 종이접기 (C/C++) (★) (0) | 2020.03.06 |
[프로그래머스 3] 2xN 타일링 (C/C++) (0) | 2020.03.06 |
[프로그래머스 3] 길찾기 게임 (C/C++) (★★) (0) | 2020.03.05 |