가장 긴 펠린드롬

108번뇌·2021년 7월 28일
0

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;
	}
}

내가 한 부분들은 짝수형태일때를 고려하지 않았기 때문이다.
밑에있는 소스가 답지임.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글