[Algorithm] 팰린드롬(palindrome)이란? / Python

팰린드롬(palindrome)이란?

팰린드롬(palindrome)은 앞에서 읽으나 뒤에서부터 읽으나 같은 단어를 말한다 '기러기'나 '오디오'등과 같은 단어를 팰린드롬이라고한다.

위와 같인 팰린드롬 알고리즘을 Python으로 구현을 해보면 아래와 같다.

def is_palindrome(inputWord):
    word = inputWord.replace(" ", "")
    stringHalf = len(word) // 2
    if (stringHalf * 2 - 1) % 2 == 1:
        for i in range(int(stringHalf)):
            if word[i] == word[len(word)-1-i]:
                continue
            else:
                return False
        return True
    else:
        return False

코드 설명

1. is_palindrome에 문자열이 들어올 경우 inputWord에 저장이된다.

2. inputWord에 공백이 있을 경우 공백을 제거해준다.

3. 공백을 제거한 문자의 길이를 2로 나누어준다. 하지만 그냥 / 로 나누면 float 형으로 나눠지기 때문에 int형으로 나눠지는 //을 사용해서 나눠주었다.

4. 2로 나눈 문자의 길이를 다시 2를 곱하고 1을 빼주어서 2로 나누었을 때 1일 경우(즉, 값이 홀수 일 경우) 팰린드롬 알고리즘이 동작된다.

4-1. 팰린드롬 알고리즘은 우선 문자열 슬라이싱을 사용하여 word[0]과 word[-1]이 서로 같을 경우 계속 반복 시켜서 일치한지 확인한다. 하지만 word[0]광 word[-1]이 서로 다를 경우 False라는 값을 return해준다.

문자열 슬라이싱

우선 'Worldskills'라는 문자열에서 World만 출력되도록 슬라이싱해보자면 아래와 같은 코드를 사용하면 된다.

string = 'Worldskills'
print(string[0:5])

그러면 World라는 문구가 출력된다. 왜냐면 Worldskills라는 문자열의 인덱스는 아래와 같다

W = string[1], o = string[2], r = string[3], l = string[4], d = string[5],
s = string[6], k = string[7],i = string[8],l = string[9],l = string[10],s = string[11]