211123 - 가장 긴 팰린드롬

이상해씨·2021년 11월 23일
0

알고리즘 풀이

목록 보기
25/94

◾ 가장 긴 팰린드롬 : 프로그래머스 LEVEL 3

문제

앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.

문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.

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


입력

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

출력

  • 부분 문자열 중 가장 긴 팰린드롬의 길이

입출력 예

sanswer
"abcdcba"7
"abacde"3

◾ 풀이

1. 해설

  • 전체 부분 집합 모두를 확인한다.
    • 각 부분 집합의 팰린드롬 여부를 확인한다.
    • 팰린드롬인 경우 길이를 확인해 최대값을 선택한다.

2. 프로그램

  1. 문자열 길이가 1인 경우는 무조건 팰린드롬이므로 범위 2이상의 경우만 확인한다.
  2. len(s) ~ 2 범위 부분 집합의 팰린드롬 여부를 확인한다.
    • 팰린드롬인 경우 최대값을 선택해 반환한다.
    • len(s)인 범위부터 확인하여 팰린드롬이 있는 경우 최대값을 바로 반환하도록 한다.
# 코드
def solution(s):
    answer = 1
    n = len(s)

    # 전체 부분 집합 확인
    for i in range(0, n):
        for j in range(n+2, i+1, -1):
            temp = s[i:j]   # i ~ j 범위의 부분 문자열 확인
            if temp == temp[::-1]:
                # 팰린드롬인 경우 길이 확인
                answer = max(answer, len(temp))

    return answer

profile
후라이드 치킨

0개의 댓글

관련 채용 정보