프로그래머스 가장 긴 팰린드롬

최세찬·2021년 8월 22일
0

🙂 문제 - 가장 긴 팰린드롬

url : https://programmers.co.kr/learn/courses/30/lessons/12904

✔️ 문제 내용

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

❌ 제한 사항

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

🖐풀이 방법

  • 프로그래머스에서 LEVEL 3로 되어있다.
  • 처음에는 팰린드롬인지 검사할 string의 크기를 늘려가며 검사하였다
  • 효율성 2번에서 오답이 났다
  • 해당 처럼 검사하면 최악의 경우 n^4의 시간 복잡도가 나오기 때문
  • 반대로 큰 것을 검사하고 해당 검사가 끝마녀 끝내주는 것이 어떨까?

📃 CODE

  def isyes(s):
   for i in range(len(s)):
       if s[i] != s[len(s)-i-1]:
           return False
       
   return True
def solution(s):
   answer = 0

   for i in range(len(s)):
       for j in range(len(s)-1,i-1,-1):
           
           if isyes(s[i:j+1]):
               answer = max(answer,len(s[i:j+1]))
               break
          
   return answer
profile
느리지만 계속해서 성장의 가치를 알고 있습니다.

0개의 댓글