
(EASY) Leetcode No.125 - Valid Palindrome 풀러가기
쉽게 말해서 뒤로해도 똑같은 단어 또는 문장을 말한다. 슈퍼주니어의 로꾸꺼랄까.. 우리말로는 회문(回文)이라고 한다.
교재에 제시된 풀이는 3가지가 있었지만, 일단 혼자 풀어보고자 도전했다. 시간을 재는 것을 까먹었지만 대략적으로 3시간 가까이 걸린 것 같다.
isalnum()은 영문자, 숫자 여부를 판별하는 함수로, 이를 이용해 해당하는 문자만 추가한다. 따라서 이 함수를 쓰면 특수문자가 제거된다.
문제에서 들어오는 input에 특수문자가 있으므로, 이를 제거하고 비교해야하기 때문에 이 함수가 필요하다.
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가지 풀이 방법도 공부해야겠다.
코딩테스트를 포기할까 했는데, 교재를 선물해준 준희 덕에 이렇게 준비하게 됐다. 첫 문제지만, 이제 시작이다.