[프로그래머스 알고리즘 스터디] 4주차 - 가장 긴 팰린드롬

YUZAMIN
Hello, World! I'm YUZAMIN, a diligently endeavoring frontend developer 🐤💦
[프로그래머스 알고리즘 스터디] 4주차 - 가장 긴 팰린드롬

문제 설명 📑

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

제한사항 🚫

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

문제 풀이 👩🏻‍💻

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 가장 긴 팰린드롬
def isPalindrome(x):
    # x가 팰린드롬인지 판단하는 함수 제작
    # (x가 x를 뒤집은 문자열과 같은지 판단)
    if x == x[::-1]:
        return True


def solution(s):
    max_count = 0
    # 문자열 길이만큼 순회
    for i in range(len(s)):
        # i번째 문자부터 마지막 문자까지 순회하며 팰린드롬인지 확인
        # 팰린드롬이면 max()함수 사용하여 최장 길이를 업데이트
        for j in range(i, len(s)+1):
            if isPalindrome(s[i:j]):
                max_count = max(max_count, len(s[i:j]))
    return max_count

문제 출처