level
goog
diid
처럼 앞으로 읽을때나 뒤로 읽을때나 모두 같은 경우를 회문 문자열이라고 한다
n개의 문자열 데이터를 입력받아 회문 문자열이면 YES 아니면 NO를 출력하는 함수를 작성하시오
import math
n= 'abba'
# 기준 인덱스 설정
st_idx = math.floor(len(n)/2) # 홀수, 짝수인 경우 모두 동일
# 굳이 math 쓸 필요없고 몫만 구하면 됨
str_idx = len(n)//2
arr_fr= []
arr_bk = []
for i in range(0,st_idx):
arr_fr.append((n[i]).upper())
for i in range(st_idx,len(n)):
arr_bk.append(n[i].upper())
arr_bk.reverse() # 거꾸로 정렬
print(arr_fr)
print(arr_bk)
if arr_fr == arr_bk:
print('YES')
else:
print('NO')
처음 이 문제를 풀을때, 인덱스를 두개로 쪼개서 기준이 되는 인덱스의 절반을 모은 리스트, 나머지 절반을 모은 리스트를 비교하여 맞으면 YES 라고 출력되게 만들었다.
더불어 MATH 함수까지 IMPORT 했는데 전혀 그럴 필요가 없다. 기준이 되는 인덱스는 몫만 구하면 될일이고, 인덱스를 활용하면 두개로 쪼갤 필요도 없다
n= 'abCBa'
n = n.upper() # 모두 대문자로 변경시켜 대소문자 구별없이 만들기
# 기준 인덱스
str_idx = len(n)//2
for i in range(str_idx):
if n[i] != n[-1-i]:
print('NO')
break
else:
print('YES')