더북(TheBook)

icon_cakewalk 프로그램 13-1

 

회문 찾기 알고리즘

 

◉ 예제 소스 p13-1-palindrome.py

# 주어진 문장이 회문인지 아닌지 찾기(큐와 스택의 특징을 이용)

# 입력: 문자열 s

# 출력: 회문이면 True, 아니면 False

 

def palindrome(s):

    # 큐와 스택을 리스트로 정의

    qu = []

    st = []

    # 1단계: 문자열의 알파벳 문자를 각각 큐와 스택에 넣음

    for x in s:

        # 해당 문자가 알파벳이면(공백, 숫자, 특수문자가 아니면)

        # 큐와 스택에 각각 그 문자를 추가

        if x.isalpha():

            qu.append(x.lower())

            st.append(x.lower())

    # 2단계: 큐와 스택에 들어 있는 문자를 꺼내면서 비교

    while qu: # 큐에 문자가 남아 있는 동안 반복

        if qu.pop(0) != st.pop(): # 큐와 스택에서 꺼낸 문자가 다르면 회문이 아님

            return False

 

    return True

 

print(palindrome(“Wow”))

print(palindrome(“Madam, I’m Adam.”))

print(palindrome(“Madam, I am Adam.”))

 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.