회문 문자열 검사

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


나의 풀이

n = int(input())
for i in range(n):
    a, b = [], []
    array = list(input().lower())
    
    for j in array:
        a.append(j)
        b.append(j)
    b.reverse()
    if a==b:
        print("YES")
    else :
        print("NO")

인덱스를 -로 접근하기

n = int(input())
for i in range(n):
    array = input().upper() # upper() : 문자를 대문자화
    size = len(array) # 문자열의 길이
    for j in range(size//2):
        if array[j] != array[-1-j]: # 처음과 뒤를 비교
        # 0 != -1, 1 != -2, 2 != -3
            print("#%d NO" %(i+1))
            break
    else:
        print("#%d YES" %(i+1))

파이썬스러운 코드

n = int(input())
for i in range(n):
    array = input().upper() # upper() : 문자를 대문자화
    if array == array[::-1]:
        print("#%d YES" %(i+1))
    else :
        print("#%d NO" %(i+1))

이렇게 짜면 좋지 않다.

위의 코드는 파이썬스러운 코드이다.

직접 비교해 보는 것이 좋다

'⏰ 코딩테스트 > 리스트 탐색' 카테고리의 다른 글

격자판 최대합  (0) 2021.09.27
백준 알고리즘 - 2003 - 수들의 합 2  (0) 2021.09.27
두 리스트 합치기  (0) 2021.09.24
백준 알고리즘 - 10804 - 카드 역배치  (0) 2021.09.24
숫자만 추출  (0) 2021.09.16
복사했습니다!