본문 바로가기
알고리즘

Algorithm - 회문 문자열 검사

by DGK 2021. 11. 7.

 

알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

문제

[회문 문자열 검사]

 

N개의 문자열 데이터를 입력받아 앞에서 읽을 때나 뒤에서 읽을 때나 같은 경우(회문 문자열)이면 YES를 출력하고, 회문 문자열이 아니면 NO를 출력하는 프로그램을 작성하시오.

 

단, 회문을 검사할 때 대·소문자를 구분하지 않는다.

 

 

*입력 설명

첫 번째 줄에는 정수 N(1 ≤ N ≤ 20)이 주어진다.

두 번째 줄부터 N개의 단어가 입력된다.

 

*출력 설명

각 줄에 해당 문자열의 결과를 YES 또는 NO로 출력한다.

 

 


 

 

풀이(Python)

답안(1)

import sys
sys.stdin = open('AA/input_11.txt', 'rt')
n = int(input())

for i in range(n):
    s = input()
    s = s.upper()
    size = len(s)
    for j in range(size // 2):
        if s[j] != s[-1 - j]:
            print('#%d NO' % (i + 1))
            break
    else:
        print('#%d YES' % (i + 1))
  
'''  
출력 :

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

'''

 

답안(2)

import sys
sys.stdin = open('AA/input_11.txt', 'rt')
n = int(input())

for i in range(n):
    s = input()
    s = s.upper()
    if s == s[::-1]:
        print('#%d YES' % (i + 1))
    else:
        print('#%d NO' % (i + 1))
        
'''  
출력 :

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

'''

 

input_11.txt(입력)

5
level
moon
abcba
soon
gooG

 

 

중요내용

  1. s[::-1] 코드는 변수 s에 들어있는 문자열의 문자 순서를 역으로 바꿔준다. (ex. abc -> cba)
  2. 대·소문자를 구분하지 않는 방법은 해당 문자열을 모두 대문자 또는 소문자로 바꿔주는 것이다.
  3. 해당 문자열이 회문인지를 검사할 때에는 문자열의 길이를 2로 나눈 몫만큼 반복문을 사용하여 검사해준다.
  4. 특정 문자열을 역순으로 읽으면 인덱스 번호는 -1, -2, -3, ... 순으로 부여된다.

 

 

'알고리즘' 카테고리의 다른 글

Algorithm - 카드 역배치  (0) 2021.11.07
Algorithm - 숫자만 추출  (0) 2021.11.07
Algorithm - 점수 계산  (0) 2021.11.02
Algorithm - 주사위 게임  (0) 2021.11.02
Algorithm - 뒤집은 소수  (0) 2021.11.02

댓글