알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
문제
[회문 문자열 검사]
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
중요내용
- s[::-1] 코드는 변수 s에 들어있는 문자열의 문자 순서를 역으로 바꿔준다. (ex. abc -> cba)
- 대·소문자를 구분하지 않는 방법은 해당 문자열을 모두 대문자 또는 소문자로 바꿔주는 것이다.
- 해당 문자열이 회문인지를 검사할 때에는 문자열의 길이를 2로 나눈 몫만큼 반복문을 사용하여 검사해준다.
- 특정 문자열을 역순으로 읽으면 인덱스 번호는 -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 |
댓글