728x90
반응형
문제 링크
https://school.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는 알파벳 소문자로만 구성
입출력 예
s | answer |
"abcdcba" | 7 |
"abacde" | 3 |
입출력 예 설명
입출력 예 #1
4번째자리 'd'를 기준으로 문자열 s 전체가 팰린드롬이 되므로 7을 return합니다.
입출력 예 #2
2번째자리 'b'를 기준으로 "aba"가 팰린드롬이 되므로 3을 return합니다.
풀이 과정
- 투 포인터 활용
- 홀수, 짝수 경우 나누어서 계산
정답
from collections import deque
def solution(s):
answer = 0
def check_palindrome(s, idx):
# 홀수
length_1 = 1
left = idx-1
right = idx+1
while left >= 0 and right < len(s):
if s[left] != s[right]:
break
else:
length_1 += 2
left -= 1
right += 1
# 짝수
length_2 = 0
left = idx
right = idx+1
while left >= 0 and right < len(s):
if s[left] != s[right]:
break
else:
length_2 += 2
left -= 1
right += 1
return max(length_1, length_2)
# for 문을 통해 계산
for idx in range(len(s)):
answer = max(answer, check_palindrome(s, idx))
return answer
728x90
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
기지국 설치 - 파이썬(Python) (0) | 2023.11.02 |
---|---|
등산코스 정하기 - 파이썬(Python) (0) | 2023.11.02 |
순위 - 파이썬(Python) (0) | 2023.10.31 |
코딩 테스트 공부 - 파이썬(Python) (0) | 2023.10.30 |
조이스틱 - 파이썬(Python) (0) | 2023.08.30 |