[Programmers] 가장 긴 팰린드롬 (Java)

오태호·2023년 3월 23일
0

프로그래머스

목록 보기
45/56
post-thumbnail

1.  문제 링크

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

2.  문제

앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.

예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다.

3.  제한사항

  • 문자열 s의 길이 : 2,500 이하의 자연수
  • 문자열 s는 알파벳 소문자로만 구성

입출력 예

4.  소스코드

class Solution {
    public int solution(String s) {
        int answer = 1;
        int size = s.length();
        boolean[][] dp = new boolean[size][size];

        for(int idx = 0; idx < size; idx++) {
            dp[idx][idx] = true;
            if(idx == size - 1) break;
            if(s.charAt(idx) == s.charAt(idx + 1)) dp[idx][idx + 1] = true;
        }

        for(int len = 3; len <= size; len++) {
            for(int idx = 0; idx <= size - len; idx++) {
                if(s.charAt(idx) == s.charAt(idx + len - 1) &&
                dp[idx + 1][idx + len - 2]) {
                    dp[idx][idx + len - 1] = true;
                    answer = Math.max(answer, len);
                }
            }
        }

        return answer;
    }
}
profile
자바, 웹 개발을 열심히 공부하고 있습니다!

0개의 댓글