목차
회문 문자열 검사
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 j in range(1,n+1):
arr=input()
temp=arr.upper()
arr=list(temp)
for i in range(len(arr)//2):
if arr[i]!=arr[-(i+1)]:
print("#%d NO" %(j))
break
else:
print("#%d YES" %(j))
문제에서 대소문자를 구분하지 않는다고 하여 처음 문자열을 입력받은뒤 upper로 모두 대문자로 바꿔준뒤 리스트로 변환해서 내부 반복문에서 첫번째 인덱스와 끝 인덱스부터 인덱싱 처리를 해서 비교하였다.
정답코드
import sys
#sys.stdin=open("input.txt", "r")
n=int(input())
for i in range(1, n+1):
str=input()
str=str.upper()
for j in range(len(str)//2):
if str[j]!=str[-1-j]:
print("#%d NO" %i)
break
else:
print("#%d YES" %i)
#다른코드
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
for i in range(n):
str=input()
str=str.upper()
if str==str[::-1]:
print("#%d YES" %i)
else:
print("#%d NO" %i)
다른 코드의 정답 코드에서는 파이썬만의 슬라이싱 연산으로 코드를 작성하였다.
좋은 코드로서 기억은 하되 그래도 구현문제는 반복문으로 규칙을 찾아 구현하는걸 목표로 하는게 좋을것 같군
'코딩테스트[파이썬] > 알고리즘 문제풀이 입문' 카테고리의 다른 글
[탐색&시물레이션] - 두 리스트 합치기 (2) | 2024.02.05 |
---|---|
[탐색&시물레이션] - 숫자만 추출 (2) | 2024.02.05 |
[구현력 키우기] - 점수계산 (0) | 2024.02.05 |
[구현력 키우기] - 주사위 게임 (2) | 2024.02.05 |
[구현력 키우기] - 뒤집은 소수 (2) | 2024.02.05 |