본문 바로가기

개발/algorithm

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

문제 링크

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

 

코딩테스트 연습 - 가장 긴 팰린드롬

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

programmers.co.kr

풀이

  • 괜히 이분 탐색 사용해서 풀려다가 시간 더 쓴 문제.. 
  • 인덱스 증가시키면서 모든 경우의 수 탐색
  • def solution(s):
      answer = 0
      for i in range(len(s)):
        for j in range(i+1, len(s)+1):
          # 팰린드롬이라면
          if check(s[i:j]):
            # 길이 긴 걸로 갱신 
            answer = max(answer,len(s[i:j]))
      return answer
    
    def check(x):
      # 좌우 대칭인지 확인 
      if x == x[::-1]:
        return True