PYTHON
[프로그래머스/PYTHON] 가장 긴 팰린드롬
U_pic
2022. 6. 8. 01:54
프로그래머스 '가장 긴 팰린드롬' 문제 풀이입니다.
문제 링크
코딩테스트 연습 - 가장 긴 팰린드롬
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들
programmers.co.kr
● 문제 간단 설명
주어진 문자열 내에서 찾을 수 있는 가장 긴 팰린드롬(palindrome)을 찾는 문제이다.
- 팰린드롬(palindrome): 앞뒤로 뒤집어도 똑같은 문자열 ex) 토마토
● 문제 해결 방향
가장 긴 문자열을 찾는 문제이기 때문에 가장 긴 부분 문자열 (len(s))에서부터 1까지 반복하면서 팰린드롬이 나오면 return 하도록 코드를 작성하였다.
● 문제 해결 코드
def solution(s):
for l in range(len(s), 0, -1):
for i in range(len(s) - l + 1):
target = s[i : i + l]
halfIndex = l // 2
left = target[0:halfIndex]
right = target[halfIndex + 1:][::-1] if l % 2 else target[halfIndex:][::-1]
if left == right:
return l
가장 긴 문자열을 찾기 때문에 긴 문자열에 대해서 먼저 체크 해주었다.
펠 린드 롬을 구분하는 로직으로는
- 가운데 글자의 index를 찾는다.
- index 기준 앞, 뒤로 문자열을 슬라이스 한다.
- 이때 뒤 문자열은 [::-1]로 역순 정렬하여 비교하였다.
의 순서로 동작하도록 하였다.
연습문제에 해당하는 파트라 그런지 Lv.3 치고는 비교적 쉬운 문제가 아니었나 하는 생각이 드는 문제였다.
● 참고