반갑습니다!

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

알고리즘 문제 풀이

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

김덜덜이 2020. 4. 2. 18:02
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

풀이

팰린드롬이 짝수로 생성되는지 홀수로 생성되는지 나누어서 체크하였다.
홀수 길이의 펠린드롬의 경우 문자열 s의 1 ~ s.length() - 1 범위의 반복문을 돌면서 기준점을 잡고 펠린드롬을 체크하였다.
짝수 길이의 경우 s의 0 ~ s.length() - 1 범위의 반복문을 돌면서 펠린드롬을 체크하였다.

코드

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int solution(string s)
{
    int answer=1;
    int i;
    for(i=1; i<s.length()-1; i++){
        int idx = 1;
        int tmp = 1;
        while(true){
            if(i - idx == -1 || i + idx == s.length()) break;
            if(s[i - idx] != s[i + idx]) break;
            tmp+=2;
            idx++;
        }
        answer = max(answer, tmp);
    }
    for(int i=0; i<s.length()-1; i++){
        if(s[i] == s[i+1]){
            int idx = 0;
            int tmp = 0;
            while(true){
                if(i-idx == -1 || i+1+idx == s.length()) break;
                if(s[i-idx] != s[i+1+idx]) break;
                tmp+=2;
                idx++;
            }
            answer = max(answer, tmp);
        }
    }
    return answer;
}