728x90
728x170
회문/팰린드롬(Palindrome) 판단하기
들어가며
- 회문(Palindrome) : 앞에서부터 읽든 뒤에서부터 읽든 동일한 단어나 문장
- 대·소문자는 구분하지 않고, 공백이나 특수 문자는 제외한다.
- 첫 글자와 마지막 글자를 비교하여 같으면 회문일 수 있고, 다르면 회문이 아니다.
- 비교하지 않은 글자가 한 글자 이하이면 회문으로 확정하고, 한 글자 이하가 아니면 첫 글자는 다음 글자로 마지막 글자는 바로 앞 글자로 이동하는 식으로 비교하고 확인하는 과정을 반복한다.
회문인 예 | 회문이 아닌 예 |
프로그램 구현
- 재귀 함수를 이용하여 팰린드롬의 여부를 확인하는 프로그램을 작성할 수 있다.
def palindrome(pStr) :
if len(pStr) <= 1 : # 문자열의 길이가 1이하이면 회문으로 처리
return True
if pStr[0] != pStr[-1] : # 문자열의 첫 문자와 끝 문자가 다를 경우
return False
return palindrome(pStr[1:len(pStr) - 1]) # 회문 판별이 되지 않았을 경우, 앞뒤 한 칸씩 잘라내고 다시 함수 호출
strAry = ["reaver", "kayak", "Borrow or rob", "주유소의 소유주", "야 너 이번 주 주번이 너야", "살금 살금"]
for testStr in strAry :
print(testStr, end = '--> ')
testStr = testStr.lower().replace(' ', '') # 영문자를 모두 소문자로 변경하고, 공백(' ')을 제거
if palindrome(testStr) :
print('O')
else :
print('X')
더보기
reaver--> X
kayak--> O
Borrow or rob--> O
주유소의 소유주--> O
야 너 이번주 주번이 너야--> O
살금 살금--> X
728x90
그리드형(광고전용)
'Source Code > Python' 카테고리의 다른 글
[Python] 1차원/2차원 배열의 중앙값 계산하기 (0) | 2022.06.28 |
---|---|
[Python] 10진수를 2진수/8진수/16진수로 변환하기 (0) | 2022.06.16 |
[Python] 괄호 매칭 검사 프로그램 (0) | 2022.05.30 |
[Python] 단순 연결 리스트(Singly Linked List) 프로그램 (0) | 2022.04.02 |
[Python] 다항식(Polynomial) 선형 리스트 표현과 계산 프로그램 (0) | 2022.03.26 |
[Python] 선형 리스트(Linear List) 처리 프로그램 (0) | 2022.03.26 |
[Python] 파일 입출력 예제 (0) | 2021.08.07 |
[Python] matplotlib 라이브러리를 이용하여 그래프 그리기 (0) | 2020.03.24 |