[프로그래머스] 가장긴팰린드롬

klean·2020년 12월 21일
0

문제설명

string(최대길이 : 2500)이 주어졌을 때 이 string의 substring 중 가장 긴 팰린드롬의 길이를 구하세요!
팰린드롬 : 대칭인 문자열

아이디어

뭔가 DP적으로 풀어야할 거 같았는데.. 그냥 각 certificate를 linear하게 검사하는 식(한 문자 기준으로 대칭이 되는지를 검사)으로 해줬다.

삽질

어떤 문자 기준으로 홀수개(예 : abcba의 경우 c 기준 5개)를 검사해줬었는데 전체 테케에서 틀리게 나왔다.
어떤 문자 기준이 아닌 짝수개(예 : abba의 경우 4개)를 검사하는 부분을 추가해줬다.

코드

#include <iostream>
#include <string>
#include<math.h>
using namespace std;
int solution(string s)
{
    int answer=0;

    for(int i = 0;i<s.size();i++){//i문자 기준으로 대칭성 검사
        int candi=1;//홀수개의 경우
        for(int j =1;i-j>=0&&i+j<s.size();j++){
            if(s[i-j]==s[i+j]){
                candi+=2;
            }
            else{
                break;
            }
        }
        answer= max(answer, candi);
        candi = 0;//짝수개의 경우
        for(int j = 0;i-j>=0&&i+j+1<s.size();j++){
            if(s[i-j]==s[i+j+1]){
                candi+=2;
            }
            else{
                break;
            }
        }
        answer = max(answer,candi);
    }
    return answer;
}

0개의 댓글