2020년/코테

[파이썬 알고리즘 인터뷰] 유효한 팰린드롬

위지원 2020. 12. 13. 17:58

github.com/onlybooks/algorithm-interview

 

팰린드롬

 

앞뒤가 똑같은 문장이나 단어 "소주 만 병만 주소" 😂😂😂😂😂😂

 

  • isalnum(): 영문자, 숫자 여부를 판단

사용하면 아래와 같이 특수문자를 제외한 나머지 영문,한글 숫자만을 체크할 수 있다. 이때, 대소문자를 구분하지 않는 것을 유의해야함!

 

1. pop() 이용하기

이를 이용하면 원래 문자열에 있던 특수문자들을 제외하고 팰린드롬을 체크할 수 있다. 

팰린드롬을 체크할 때는 pop을 사용하여 pop(0)과 pop()을 이용해 앞뒤로 꺼내서 체크한다.

 

2. 데크(Deque) 이용하기: 리스트 pop에 비해 성능이 향상됨

Double-ended Queue는 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조

 

 

3. 슬라이스 이용해서 성능 향상시키기: isalnum을 이용하지 않고, 정규식을 이용해 불필요한 문자를 제거하고 

역인덱싱을 이용하여 출력시키면 성능을 향상시킬 수 있다.

 

추가로 아래도 실험해봤는데, 그렇게 크게 차이가 나질 않는다. 심지어 둘이 시간 순위가 바뀌는 경우도 있고.. 

if strs[::-1] != sts: 를 비교할 수 있다는게 좋은 것 같다. 


www.acmicpc.net/problem/10988

 

10988번: 팰린드롬인지 확인하기

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

www.acmicpc.net

str = input()

def isPalindrome(s:str)->bool:
    return 0 if s != s[::-1] else 1

print(isPalindrome(str))