[코딩테스트C++]가장 긴 팰린드롬

후이재·2020년 10월 9일
1

오늘의 문제

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

가장 긴 팰린드롬

나의 풀이

#include <iostream>
#include <string>
using namespace std;
int solution(string s)
{
    int answer=1;
    int size = s.size();
    for(int i=1;i<size-1;i++){
        int lim = min(i, size - i-1);
        for(int j=1;j<=lim;j++){
            if(s[i-j] != s[i+j])
                break;
            else
                answer = max(answer, j*2+1);
        }
        lim = min(i, size - i);
        for(int j=1;j<=lim;j++){
            if(s[i-j] != s[i+j-1])
                break;
            else
                answer = max(answer, j*2);
        }
    }
    return answer;
}

모범 답안

배울 점

  • 우선 s 길이가 2500이하라길래 음. 쭉 둘러봐도 되겠군 싶어서 각 idx에 대해 검사를 진행.
  • 홀수일때랑 짝수일때를 한번에 생각해보려함. 각 경우에서 비교해볼 최대 범위를 정하고 거기까지 각 자리의 문자가 같은지 비교함
  • 불일치 발생시 종료, 일치시 갱신 으로 끝을 냈다.
  • 하나 테스트중 틀린게 있어서 입력을 몇개 해보니 aaaaaa이 안되더라. 아 짝수일때 lim을 짝수에 맞게 구하지 않은것. 그걸 고치고 성공을 받음
profile
공부를 위한 벨로그

0개의 댓글