CS/알고리즘_문제풀이(파이썬)

가장 긴 팰린드롬

Jedy_Kim 2021. 8. 23. 22:33
728x90

문제 설명

※ 주의

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

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

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

제한사항

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

입출력 예

s answer
"abcdcba" 7
"abacde" 3

입출력 예 설명

입출력 예 #1
4번째자리 'd'를 기준으로 문자열 s 전체가 팰린드롬이 되므로 7을 return합니다.

입출력 예 #2
2번째자리 'b'를 기준으로 "aba"가 팰린드롬이 되므로 3을 return합니다.

 

#코드

1
2
3
4
5
6
7
8
9
10
11
12
13
def isPalindrome(x):
    if x == x[::-1]: return True
 
def solution(s):
    answer = 0
 
    for i in range(len(s)):
        for j in range(( i+1 ), ( len(s)+1 )):
            if isPalindrome(s[i:j]):
                if answer < len(s[i:j]):
                    answer = len(s[i:j])
    
    return answer
cs

 

반응형

'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글

영어 끝말잇기  (0) 2021.08.24
자동완성  (0) 2021.08.24
등굣길  (0) 2021.08.23
가장 큰 수  (0) 2021.08.22
2 x n 타일링  (0) 2021.08.22