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

코테 문제 풀이

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

미니모아 2022. 3. 24. 23:25
반응형

가장 긴 팰린드롬

문제 설명

※ 주의

본 문제는 일부러 시간복잡도가 오래 걸려도 정답이 나오도록 제한 시간이 넉넉하게 설정되어 있습니다. 본 문제를 정말 빠른 알고리즘으로 풀려면 구글에서 longest palindrom subsequence로 검색을 해보세요.

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

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

제한사항

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

풀이

제한 시간이 넉넉하다길래 그냥 투 포인터로 풀었다.

Manacher 알고리즘을 사용하면 빨리 풀 수 있다고 한다.

def solution(s):
    answer = 1
    n = len(s)
    for i in range(n):
        for j in range(i + 1, n):
            sub_str = s[i:j + 1]
            if sub_str == sub_str[::-1]:
                answer = max(answer, len(sub_str))
    return answer
반응형
Comments