문제 설명
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
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[탐색] 미로 탈출 명령어 ( 파이썬 ) (0) | 2023.05.14 |
---|---|
[이분 검색] 외벽 점검 (파이썬, 카카오) (1) | 2023.05.12 |
[최단거리] 부대 복귀 (파이썬) (0) | 2023.05.06 |
[링크드리스트] 표 편집 (파이썬) (0) | 2023.05.06 |
[파이썬] 풍선 터트리기 (0) | 2023.05.03 |