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

    반응형
    SMALL

    팰린드롬(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]

    반응형
    LIST

    'Algorithm' 카테고리의 다른 글

    [Algorithm] 탐색(선형탐색, 이진탐색)이란? / Python  (0) 2022.01.22

    댓글