(EASY) LeetCode No.125 - Valid Palindrome

Kade Jeon·2024년 1월 29일

LeetCode

목록 보기
1/6
post-thumbnail

(EASY) Leetcode No.125 - Valid Palindrome 풀러가기

팰린드롬(Palindrome)이란?

쉽게 말해서 뒤로해도 똑같은 단어 또는 문장을 말한다. 슈퍼주니어의 로꾸꺼랄까.. 우리말로는 회문(回文)이라고 한다.

  • 여보안경안보여
  • 여보게저기저게보여
  • 소주만병만주소

문제 풀이

교재에 제시된 풀이는 3가지가 있었지만, 일단 혼자 풀어보고자 도전했다. 시간을 재는 것을 까먹었지만 대략적으로 3시간 가까이 걸린 것 같다.

교재에서 참고한 내용 - isalnum()

isalnum()은 영문자, 숫자 여부를 판별하는 함수로, 이를 이용해 해당하는 문자만 추가한다. 따라서 이 함수를 쓰면 특수문자가 제거된다.
문제에서 들어오는 input에 특수문자가 있으므로, 이를 제거하고 비교해야하기 때문에 이 함수가 필요하다.

내가 제출한 코드

  • Language: Python3
class Solution:
    def isPalindrome(self, s: str) -> bool:
    	# 빈 리스트를 두 개 만듭니다.
        origin = list()
        temp1 = list()
        
        # 주어진 문자 또는 단어를 소문자로 바꿉니다.
        l = s.lower()
        
        # 반복문을 돌면서 특수문자를 제외한 문자를 두 리스트에 담습니다.
        for i in range(len(l)):
            if l[i].isalnum():
                origin.append(l[i])
                temp1.append(l[i])
        
        # 리스트 하나를 뒤집습니다.
        temp1.reverse()    
        
        # 정상적인 리스트와 뒤집힌 리스트를 비교하여 결과를 boolean으로 반홥합니다.
        return origin == temp1

결과

Runtime: 46 ms, faster than 65.64% of Python3 online submissions for Valid Palindrome.
Memory Usage: 18.9 MB, less than 17.43% of Python3 online submissions for Valid Palindrome.

메모리는 모르겠지만, 교재에 나온 다른 풀이 3가지를 보았을 때, 내 풀이방식이 3개 중 2개보다는 빨랐다 !
교재에서 제시해주는 3가지 풀이 방법도 공부해야겠다.

코딩테스트를 포기할까 했는데, 교재를 선물해준 준희 덕에 이렇게 준비하게 됐다. 첫 문제지만, 이제 시작이다.

profile
안녕하세요. 백엔드 개발자가 되고 싶은 Kade 입니다.

0개의 댓글