가장 긴 팰린드롬

JJW·2024년 12월 13일

코딩 테스트

목록 보기
7/23

문제


문제 풀이

using System;

public class Solution 
{
    public int solution(string s) 
    {
        // 가장 긴 팰린드롬 = 중심 확장 방식
        
        // 문자열 길이
        int n = s.Length;
        // 최대 길이
        int maxLength = 0;
        
        for(int center = 0; center < n; center++)
        {
            // 홀수 길이
            maxLength = Math.Max(maxLength,ExpandFromCenter(s,center,center));
            
            // 짝수 길이
            if(center + 1 < n)
                maxLength = Math.Max(maxLength,ExpandFromCenter(s,center,center+1));
        }
        
        return maxLength;
    }
    
    public int ExpandFromCenter(string s, int left, int right)
    {
        while(left >= 0 && right < s.Length && s[left] == s[right])
        {
            left--;
            right++;
        }
        return right - left - 1;
    }
}

느낀 점

문제의 의도에 따라 사용 방식을 맞춰야 할 것 같습니다. 가장 긴 팰린드롬을 찾는 문제는 중심 확장 방식으로 팰린드롬의 여부를 저장하는 문제는 DP 방식으로

profile
Unity 게임 개발자를 준비하는 취업준비생입니다..

0개의 댓글