본문 바로가기

독일에서 코딩 독학(IT Lernen)/Python

파이썬 회문(回文, Palindrome)


회문(回文, Palindrome)은 앞에서 읽으나 뒤에서 읽으나 같은 단어 또는 문장을 말해. 예를 들어 "level", "radar", "소주 만 병만 주소" 같은 단어와 문장이 회문입니다.

파이썬에서 회문을 확인하는 가장 쉬운 방법은 문자열을 뒤집어서 원래 문자열과 같은지 비교하는 것!





1. 가장 간단한 방법




def is_palindrome(s):
    return s == s[::-1]  # 문자열을 뒤집어서 비교

사용 예시:

print(is_palindrome("level"))  # True
print(is_palindrome("hello"))  # False

[::-1]는 문자열을 뒤집는 슬라이싱 기법입니다.






2. 공백, 대소문자 무시하는 버전

회문을 검사할 때 대소문자나 공백을 무시하고 싶다면, 소문자로 변환하고 공백을 제거하면 됩니다.




def is_palindrome(s):
    s = s.lower().replace(" ", "")  # 소문자로 변환하고 공백 제거
    return s == s[::-1]

사용 예시:

print(is_palindrome("A Santa at NASA"))  # True
print(is_palindrome("Hello World"))  # False






3. 반복문을 사용한 방법

슬라이싱 없이, 반복문으로 직접 비교하는 방법도 있다.



def is_palindrome(s):
    s = s.lower().replace(" ", "")
    length = len(s)
    
    for i in range(length // 2):  # 문자열의 절반만 비교하면 됨
        if s[i] != s[length - i - 1]:
            return False
    return True

사용 예시:

print(is_palindrome("Racecar"))  # True
print(is_palindrome("Python"))  # False


이 방법은 메모리를 적게 사용하지만 속도는 슬라이싱보다 약간 느릴 수도 있다.