우당탕탕 개발일지

[프로그래머스] Level 3. 가장 긴 팰린드롬 본문

Algorithm(c++)/Level 3

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

devchop 2025. 3. 10. 11:27

https://school.programmers.co.kr/learn/courses/30/lessons/12904

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

  1. 팰린드롬에는 2가지가 있다.
  2. 홀수로 대칭인것 "abcba"  >> getPalindrome() 함수에서 max길이를 구한다.
  3. 짝수로 대칭인것 "abccba" >> getEvenPalindrom() 함수에서 max길이를 구한다. 
#include <iostream>
#include <string>
using namespace std;

int getPalindrome(string s, int i){
    int value = 1;
    int index =1;
    while(i-index >=0 && i+index < s.size() && s[i-index] == s[i+index]){
        value = index*2+1;
        index++;
    }
    return value;
}

int getEvenPalindrome(string s, int i) {
    int value = 0;
    int index = 0;
    while (i - index >= 0 && i + 1 + index < s.size() && s[i - index] == s[i + 1 + index]) {
        value = (index + 1) * 2;
        index++;
    }
    return value;
}

int solution(string s)
{
    int answer=1;

    for(int i=0; i<s.size(); i++){
        answer= max(answer, getPalindrome(s,i));
        answer= max(answer, getEvenPalindrome(s,i));
    }
    return answer;
}