https://programmers.co.kr/learn/courses/30/lessons/12904
#include <iostream>
#include <string>
using namespace std;
int solution(string s)
{
if (s.size() == 1) return 1;
else if (s.size() == 2)
{
if (s[0] == s[1]) return 2;
else return 0;
}
else
{
int iLength(1);
for (int i = 1; i < s.size() - 1; i++)
{
int iTempLength(1);
for (int j = 1; j <= i; j++)
{
if (s[i - j] == s[i + j]) iTempLength += 2;
else break;
}
if (iTempLength > iLength) iLength = iTempLength;
}
return iLength;
}
}
이렇게 했는데 test_case 틀렸다.
int solution(string s)
{
if (s.size() == 1) return 1;
else if (s.size() == 2)
{
if (s[0] == s[1]) return 2;
else return 1;
}
else
{
int iLength(1);
for (int i = 1; i < s.size() - 1; i++)
{
int iTempLength1(0);
int iTempLength2(1);
for (int j = 1; j <= i; j++)
{
if (s[i - j] == s[i + j]) iTempLength2 += 2;
else break;
}
for (int j = 1; j <= i; j++)
{
if (s[i - j] == s[i + j-1]) iTempLength1 += 2;
else break;
}
if (iTempLength2 > iTempLength1) iTempLength1 = iTempLength2;
if (iTempLength1 > iLength) iLength = iTempLength1;
}
return iLength;
}
}
내가 한 부분들은 짝수형태일때를 고려하지 않았기 때문이다.
밑에있는 소스가 답지임.