회문(Palindrome) 판별하기 [코딩테스트 Python]

시나리오

언휴는 요즘 문학에 빠져 있어요.

지난 주에는 회문 (Palindrome)이 들어간 작품들을 보았죠.

“Madam, I’m Adam.” 처럼 회문은 앞으로 읽거나 뒤로 읽어도 똑같은 문장이예요.

회문은 띄어쓰기나 문장 부호는 무시한다고 하네요.

언휴는 보다 많은 회문을 찾기 위해 회문 판독기를 만들고 있어요.

여러분은 언휴를 도와 회문을 판별하는 기능을 구현하세요.

문제

난이도: 2 (easy) [1:very easy, 2:easy, 3:middle, 4: difficult, 5: very difficult]

입력: [“Madam, I’m Adam.”, “rotator”,”Hello”,”nurses run”]

출력: [True, True, False, True]

설명: 입력 요소가 회문일 때 True, 회문이 아닐 때 False로 판별하여 판별한 결과 컬렉션을 반환합니다.

낱말 사이에 있는 띄어쓰기나 문장 부호는 무시하며 대소문자를 구분하지 않습니다.

코드

def IsPalindromes(texts):

texts = ["Madam, I'm Adam.", "rotator","Hello","nurses run"]
print(IsPalindromes(texts))

솔루션

def IsPalindromes(texts):
    results =[]
    for text in texts:
        ntext = ''.join(char for char in text if char.isalnum())
        ntext = ntext.upper()
        start=0
        end = len(ntext)-1
        while(start<end):            
            if (ntext[start] != ntext[end]):                
                break
            start+=1
            end-=1
        if(start<end):
            results.append(False)
        else:
            results.append(True)
    return results

texts = ["Madam, I'm Adam.", "rotator","Hello","nurses run"]
print(IsPalindromes(texts))