본문 바로가기
Algorithm/탐색 & 시뮬레이션

회문 문자열 검사 - python

by 눈오는1월 2023. 7. 14.
728x90

문제

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):
    s = input()
    #s = list(s.lower()) -> list 안해도됨
    s = s.lower() # 모든 문자를 소문자로 변환 (대소문자 구분 안할 수 있음)
    m = len(s)//2
    cnt = 0
    for j in range(m):
        if s[j] != s[len(s)-1-j]:
            print("#"+str(i+1)+" NO")
            cnt = 1
            break
    if cnt == 0:
        print("#"+str(i+1)+" YES")
    """    
    위 부분(if cnt == 0) 
    # else:
    #     print("#%d YES" %(i+1))
    이런식으로 고치면 cnt라는 변수 없이 for 문안에서 break 가 안되면 else를 실행함
    """
    

    '''
    문자열 슬라이싱
    s[::-1] -> print 하면 문자를 자동으로 거꾸로 돌려줌 
    이상태에서
    if s==s[::-1] 로 해도 됨 원래 문자랑 거꾸로 된 문자랑 비교
    '''
728x90

'Algorithm > 탐색 & 시뮬레이션' 카테고리의 다른 글

격자판 최대 합 - python  (0) 2023.07.15
수들의 합 - python  (0) 2023.07.15
두 리스트 합치기 - python  (0) 2023.07.15
카드 역배치(정올 기출)-python  (0) 2023.07.15
숫자만 추출 -python  (0) 2023.07.14