프로그래머스 가장 긴 팰린드롬 문제 풀이를 진행하였습니다.
문제를 읽으면 아래와 같은 해석이 가능합니다.
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬이라고 합니다.
문자열 s의 부분문자열 중 가장 긴 팰린드롬을 찾아야 합니다.
팰린드롬 문자열을 찾기 위해 0번째 인덱스부터 기준을 잡고 문자열을 찾아나가야 합니다.
기준이 되는 인덱스에서
인덱스 뒤에 있는 문자와 앞에 있는 문자가 같을 경우 펠린드롬 문자열이 가능합니다.
인덱스의 문자와 앞에 있는 문자가 같을 경우 또한 펠린드롬 문자열이 가능합니다.
위와 같은 문자열을 찾았을 때 왼쪽 오른쪽으로 한칸씩 이동하며 문자가 같은지 확인해주며 제일 긴 문자열을 리턴하면 됩니다.
#include <bits/stdc++.h>
#include <iostream>
#include <string>
using namespace std;
int solution(string s)
{
int answer = 1;
int strSize = s.size();
int cnt = 0;
for(int i = 0; i < strSize-1; i++)
{
if(i > 0)
{
if(s[i-1] == s[i+1])
{
cnt += 3;
int left = i-2;
int right = i+2;
while(left >= 0 && right < strSize)
{
if(s[left] == s[right]){
cnt += 2;
}else{
break;
}
left--;
right++;
}
answer = max(answer, cnt);
}
cnt = 0;
}
if(s[i] == s[i+1])
{
cnt += 2;
int left = i-1;
int right = i+2;
while(left >= 0 && right < strSize)
{
if(s[left] == s[right]){
cnt += 2;
}else{
break;
}
left--;
right++;
}
answer = max(answer, cnt);
}
cnt = 0;
}
return answer;
}
https://school.programmers.co.kr/learn/courses/30/lessons/12904