링크텍스트
처음에 쓰리포인터를 활용해서 문제를 풀었는데 기본 주어진 테스트 케이스는 통과했지만 나머지 테스트 케이스에서 통과하지 못했다. 근데 그 실패한 코드를 짜는 데에도 엄청 오래 걸렸다.
아무튼 나에게 어려운 문제라고 느껴져서 다른 분들이 풀어놓은 정답 코드를 참고하여 정리한다.
s = "babad"
# 양옆으로 퍼져가면서 두 수가 같은지를 확인하여 sub string(팰린드롬)을 반환한다.
def expend(str, left, right):
while left >= 0 and right < len(str) and str[left] == str[right]:
left -= 1
right += 1
return s[left+1:right]
max_palindrom = ""
for i in range(len(s)):
sub = expend(s, i, i) # 홀수 팰린드롬
if len(sub) >= len(max_palindrom):
max_palindrom = sub
sub = expend(s, i, i+1) # 짝수 팰린드롬
if len(sub) > len(max_palindrom):
max_palindrom = sub
print(max_palindrom)
이해하기도 쉽고 가독성도 좋은 코드이다.