[문제]
N개의 문자열 데이터를 입력받아 앞에서 읽을 때나 뒤에서 읽을 때나 같은 경우(회문 문자열)이면 YES를 출력하고 회문 문자열이 아니면 NO를 출력하는 프로그램을 작성한다. 단 회문을 검사할 때 대소문자를 구분하지 않습니다.
▣ 입력설명
첫 줄에 정수 N(1<=N<=20)이 주어지고, 그 다음 줄부터 N개의 단어가 입력된다.
각 단어의 길이는 100을 넘지 않는다.
▣ 출력설명
각 줄에 해당 문자열의 결과를 YES 또는 NO로 출력한다.
▣ 입력예제 1
5
level
moon
abcba
soon
gooG
▣ 출력예제 1
#1 YES
#2 NO
#3 YES
#4 NO
#5 YES
[풀이]
import sys
n = int(input())
for i in range(1, n+1):
words = input()
words = words.upper()
for j in range(len(words) // 2): # 0부터 문자열 길이의 절반만큼 반복
if words[j] != words[-1-j]: # 왼쪽 문자와 오른쪽 문자를 비교하여 문자가 다르면
print("#%d No" %i) # 회문 문자열이 아님을 print
break
else:
print("#%d YES" %i)
[설명]
1. 회문문자열
- 회문문자열: 순서를 거꾸로 읽어도 제대로 읽은 것과 같은 단어와 문장
- 회문문자열 판별법: 가운데 문자를 기준으로 왼쪽과 오른쪽의 문자가 같다!! (이걸 몰랐음)

'Coding Test > Python' 카테고리의 다른 글
| [Python] 카드 역배치 (0) | 2023.01.29 |
|---|---|
| [Python] 숫자만 추출 (0) | 2023.01.25 |
| [Python] 점수계산 (0) | 2023.01.23 |
| [Python] 주사위게임 (0) | 2023.01.23 |
| [Python] 뒤집은 소수 (0) | 2023.01.18 |