본문 바로가기
코딩 테스트/프로그래머스

[파이썬] 가장 긴 팰린드롬 (파이썬)

by 위그든씨 2023. 5. 8.

문제 설명

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 풀이

  • 처음에는 이분 탐색으로 풀려고 했는데 생각해보니 결국 모든 지점에서 다 따져봐야함
  • 특정 지점을 mid라고 두고 [0]부터 [n-1]까지 탐색
  • 팰린드롬이 mid를 중심으로 좌우가 같은 경우 (팰린드롬 길이가 홀수인 경우)
  • mid와 그 오른쪽 값이 같은 경우 이 두가지로 나눠서 품 (팰린드롬 길이가 짝수인 경우)

소스 코드

def solution(se):
    answer = 0
    n = len(se)
    for mid in range(n):
        left,right = mid-1,mid+1
        ord = 1
        while(left>=0 and right<n):
            if se[left]==se[right]:
                left-=1
                right+=1
                ord+=2
            else:
                break
        rrd=0

        left,right = mid,mid+1
        while(left>=0 and right<n):
            if se[left]==se[right]:
                left-=1
                right+=1
                rrd+=2
            else:
                break
        answer= max(answer,max(ord,rrd))
                
    return answer