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

코테 문제 풀이

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

미니모아 2022. 4. 13. 17:06
반응형

가장 긴 팰린드롬

문제

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

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

제한사항

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

풀이

s의 길이가 2500 이하이기 때문에 이중 for문을 사용해도 된다.

start와 end를 0, len(s) 부터 시작해서 하나씩 움직여 보면서

각 부분 배열을 뒤집어서 같은지 확인하고 팰린드롭일 때 최대값을 갱신한다.

end를 오른쪽에서 왼쪽으로 움직이기 때문에 한번 매칭 되면 더 찾아봤자 더 짧기 때문에 종료한다.

def solution(s):
    answer = 0
    for start in range(len(s)):
        for end in range(len(s), 0, -1):
            if s[start:end] == s[start:end][::-1]:
                answer = max(answer, len(s[start:end]))
                break
​
    return answer
반응형
Comments