코딩 테스트/프로그래머스
[파이썬] 가장 긴 팰린드롬 (파이썬)
위그든씨
2023. 5. 8. 20:54
문제 설명
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