출처 : https://dojang.io/mod/page/view.php?id=2331
Palindrome : 회문, 단어나 문장이 그 순서를 뒤집은 경우와 같은 것을 말한다.
example : "level", "kayak", "ABBA", "SOS" ...
회문 판별은 다음과 같다.
1. i = 0일 때,
2. i번째 문자와 len(문자열)-i 번째 문자가 같은가?
2번 조건을 문자열을 반으로 나눈 길이 만큼 반복해서 체크했을 때 전부 'yes'에 해당하면 그 문자열은 회문이다.
이때, 문자열은 홀수인 경우와 짝수인 경우로 나뉘는데,
홀수이면 문자열길이 / 2 가 정수로 딱 나눠 떨어지지 않는다.
따라서 파이썬에서는 문자열길이 // 2로 해서 2로 나눈 몫만큼 반복하도록 해야한다.
word = input('단어를 입력하세요: ')
is_palin = True
for i in range(len(word)//2):
if word[i] != word[-1-i]:
is_palin = False
break
print(is_palin)
문자열 길이의 절반만큼 반복하면서 각 인덱스의 문자가 같지 않으면 회문이 아니라고 판단하고 반복을 멈춘다.
슬라이싱 방법을 사용해서 문자열을 뒤집어 판단해보자.
word = input('단어를 입력하세요 :')
print(word == word[::-1])
[::-1] 를 사용하면 문자열을 뒤집을 수 있다.
각 문자를 순서대로 체크하여 word와 word[::-1]이 같으면 True를 반환한다.
reverse()를 사용해서 문자열을 뒤집고 list로 생성하여 두 단어를 비교한다.
word = 'level'
list(word) == list(reversed(word))
reverse()를 사용해서 문자열을 뒤집고 문자열로 생성하여 두 단어를 비교한다.
word = 'level'
word == ''.join(reversed(word))
위와 같은 방법으로 굉장히 간단하게 회문을 비교할 수 있다.
'Programming > Python' 카테고리의 다른 글
파이썬 '...' ellipsis 의미 (0) | 2020.10.26 |
---|---|
Python N-gram 생성 (0) | 2020.01.02 |
Python 객체 파일에 저장하기 (0) | 2020.01.01 |
Python 내장 함수 (0) | 2019.12.26 |
Python 예외 처리 (0) | 2019.12.26 |