알고리즘 문제 풀이/프로그래머스

[가장 긴 팰린드롬/LV3/Python3]

제유찬 2024. 12. 6. 18:30

가장 긴 팰린드롬 LV3

 

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

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


입출력 예
s answer
"abcdcba" 7
"abacde" 3

 

 

가능한 제일 긴 길이부터 팰린드롬이 가능한지 확인하였다.

s의 길이가 크지 않아 해당 방법으로도 풀이가 가능했다.

 

 

더보기
def solution(s):
    answer = 1

    n = len(s)

    for i in range(n, 1, -1):
        j = 0
        canAcces = n - i + 1
        
        for j in range(canAcces):
            arr = s[j:j + i]
            index = int(i / 2)

            if i % 2 == 1:
                for check in range(1, index + 1):
                    if arr[index + check] != arr[index - check]:
                        break
                else:
                    return i
            elif arr == arr[::-1]:
                return i
    return answer