YoungSoo

프로그래머스 - 가장 긴 펠린드롬(Python 풀이) 본문

코딩테스트

프로그래머스 - 가장 긴 펠린드롬(Python 풀이)

YoungSooSoo 2023. 3. 9. 14:57

문제 설명 👨🏻‍💻

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

코드 구현 👨🏻‍💻

  • 알고리즘 종류: 문자열
  • 시간복잡도: O(N^2)
def solution(s):
    answer = ''

    for i in range(len(s)):
        for j in range(i+1, len(s)+1):
						# 특정 문자열을 나타내기 위한 슬라이싱
            a=s[i:j]
						# 문자열을 뒤집고 가장 긴 문자열을 answer 변수에 대입
            if a == a[::-1] and len(a) > len(answer):
                answer = a
    return answer

풀이 방법 👨🏻‍💻

  • 1차 시도
  • 문자열
  • 최종
    1. answer 변수를 빈 문자열으로 초기화합니다. 이 변수는 가장 긴 팰린드롬의 길이를 저장할 것입니다.
    2. **for**문을 사용하여, 문자열 s 내의 모든 부분 문자열(substring)을 검사합니다. **i**는 시작 인덱스, **j**는 끝 인덱스를 나타냅니다. 이때 **j**는 **i**보다 크게 설정하여 중복 검사를 피합니다.
    3. 현재 검사 중인 부분 문자열 **a**가 팰린드롬인지 검사합니다. 이때 **[::-1]**을 사용하여 문자열을 뒤집은 후, 원래 문자열과 비교합니다. 만약 **a**와 뒤집은 **a**가 같다면, 즉 **a**가 팰린드롬이라면 **answer**를 **len(a)**와 answer 중 큰 값으로 업데이트합니다.
    4. 모든 부분 문자열을 검사한 후, answer 값을 반환합니다.
    이 코드는 브루트 포스(brute force) 알고리즘으로, 모든 가능한 부분 문자열을 검사하기 때문에 시간 복잡도가 O(N^3)입니다. 따라서 입력 크기가 큰 경우 효율적이지 않을 수 있습니다.
  • 문자열