최대 1 분 소요

회문 문자열 검사

문제 정리

입력

5 // n
level // 1번째 단어
moon // 2번째 단어
abcba // 3번째 단어
soon // 4번째 단어
gooG // 5(=n)번째 단어

처리 과정

  1. for문 안에서 스트링 입력받기
  2. 스트링을 모두 소문자로 변경
  3. 스트링 길이의 반만 for문으로 접근
  4. for문 안에서 대칭적으로 같은지 확인

출력

#1 YES
#2 NO
#3 YES
#4 NO
#5 YES

풀이 - 1

import sys
sys.stdin = open("./input/in1.txt", "rt")

n = int(input())

for i in range(n):
    str=input() # 문자열 한 줄 읽어들이기
    str=str.lower() # 대소문자 구분 x
    leng=len(str)
    
    for j in range(leng//2):
        # if str[j]!=str[leng-j-1]: # 인덱스를 앞에서부터(0부터) 접근
        if str[j]!=str[-1-j]: # 인덱스를 뒤에서부터(-1부터) 접근
            print("#%d NO" %(i+1))
            break
    else:
        print("#%d YES" %(i+1))

풀이 - 2

import sys
sys.stdin = open("./input/in1.txt", "rt")

n = int(input())

for i in range(n):
    str=input() 
    str=str.lower() 

    if str==str[::-1]: ## str[::-1]은 str을 reverse 시킴!
        print("#%d YES" %(i+1))
    else:
        print("#%d NO" %(i+1))

정리

  • 맨 마지막 인덱스는 -1 (그 앞은 -2)
  • 대칭 확인할 때에는 스트링 길이의 반만 접근해도 됨: range(leng//2)
  • for-else문 사용시 break 잊지 말기
  • str[::-1]은 str을 reverse 시킴! (하지만 직접 비교하는 것도 알아야함)


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: