본문으로 바로가기
728x90
반응형

Given a string s, return the longest palindromic substring in s.

 

 

Solve

입력값이 다음과 같을 때

"babad"

 출력 예시는 다음과 같다.

"bab"

 주어진 문자열에서 가장 긴 팰린드롬의 부분 문자열을 출력하는 문제이다. 필자는 특출 난 알고리즘 기법을 아는 것이 아니기 때문에 무지성으로 정말 모든 부분 문자열을 구한 후 이를 List에 저장하고 가장 긴 문자열을 뽑아내는 방식으로 풀었다.

# 필자가 푼 방식
class Solution:
    def longestPalindrome(self, s: str) -> str:

        length = len(s)
        result = []

        if s == s[::-1]:
            return s

        for x in range(length):
            for y in range(length + 1):
                temp = s[x:y]

                if (temp == temp[::-1]) and temp:
                    result.append(temp)
        return max(result, key=len)

 

 

결과는 반쯤 예상했었지만 최악의 효율이다.

사실 필자가 푼 코드를 Leet Code에 그대로 제출하게 되면 거의 통과하지 못한다. 말 그대로 어쩌다 운이 좋아 통과한 셈으로 봐도 상관없다.

몇 번 시도해보다가 안되니까 다른 풀이는 어떤게 있나 하고 봤는데 필자랑 거의 같은 꼴로 푼 코드가 있어서 몇 번 Submit을 해서 통과했다.  다음 포스팅은 Two Pointer Sliding Window 이용해서 푸는 방법을 다뤄보기로 하고 이만 글을 마친다.

 

 

728x90
반응형

'Algorithm > LeetCode' 카테고리의 다른 글

[LeetCode] Array-partition-i  (0) 2022.03.29
[LeetCode] Two Sum  (0) 2021.10.03
[Leet Code] Group Anagrams  (0) 2021.09.26
[LeetCode] Palindrome 고찰하기  (0) 2021.09.12
[Leet Code] Reorder Data in Log Files  (0) 2021.04.21