Python - 회문 판별하기

whybein·2020년 4월 24일
0
post-thumbnail

코딩도장 강의를 바탕으로 정리한 내용입니다.

회문(palindrome) 은 순서를 거꾸로 해도 같은 단어 또는 문장을 말합니다. 예를 들면 토마토, level 같은 단어가 있습니다.

 

1. 반복문

단어를 반 접어서 맞는지 확인하는 방식입니다.(처음과 끝에서 출발한 index를 비교)

word = input('단어를 입력하세요: ')
 
is_palindrome = True                 # 회문 판별값을 저장할 변수, 초깃값은 True
for i in range(len(word) // 2):      # 0부터 문자열 길이의 절반만큼 반복
    if word[i] != word[-1 - i]:      # 왼쪽 문자와 오른쪽 문자를 비교하여 문자가 다르면
        is_palindrome = False        # 회문이 아님
        break
 
print(is_palindrome)                 # 회문 판별값 출력

 

2. 리스트 슬라이스

이 글에서 정리했던 extended slice를 사용하는 방법입니다.

word = input('단어를 입력하세요: ')
 
print(word == word[::-1])    # 원래 문자열과 반대로 뒤집은 문자열을 비교

 

3. reversed 리스트

string을 list()로 생성하면 문자 하나를 요소로 갖는 리스트가 생성됩니다.

>>> word = 'level'
>>> list(word) == list(reversed(word))
True

>>> list(word)
['l', 'e', 'v', 'e', 'l']
>>> list(reversed(word))
['l', 'e', 'v', 'e', 'l']

 

4. join과 reversed

빈 문자열에 join으로 거꾸로된 문자를 만들어 비교하는 방법입니다.

>>> word = 'level'
>>> reversed(word)
<reversed object at 0x7f1843af00d0>
>>> word == ''.join(reversed(word))
True

>>> word
'level'
>>> ''.join(reversed(word))
'level'
profile
Back-End Developer

0개의 댓글