-
가장 긴 팰린드롬코딩 테스트/Level 3 2020. 9. 18. 11:53반응형
가장 긴 팰린드롬
연습문제
2100명 완료https://programmers.co.kr/learn/courses/30/lessons/12904
코딩테스트 연습 - 가장 긴 팰린드롬
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들
programmers.co.kr
파이썬의 효율성 테스트가 제대로 설정되지 않은 것 같다.
단순한 코드로 바로 Pass.
Manacher's Algorithm을 사용하는 것이 더 좋다.
(반칙 같지만 https://docs.python.org/ko/3/library/difflib.html 를 이용하는 방법도 있다.)def solution(s): answer = 0 for i in range(len(s)): for j in range(i + 1, len(s) + 1): if s[i: j] == s[i: j][:: -1]: answer = max(answer, len(s[i: j])) return answer
삐뚤어진 맘으로..
def solution(s): return max(len(s[i: j]) for i in range(len(s)) for j in range(i + 1, len(s) + 1) if s[i: j] == s[i: j][:: -1])
좀 더 삐뚤어진 맘으로..
solution = lambda s:max(len(s[i: j]) for i in range(len(s)) for j in range(i + 1, len(s) + 1) if s[i: j] == s[i: j][:: -1])
Manacher's Algorithm
(https://hyungjun-950912.tistory.com/219, https://ialy1595.github.io/post/manacher/)반응형