📌
N개의 문자열 데이터를 입력받아 앞에서 읽을 때나 뒤에서 읽을 때나 같은 경우(회문 문자열) 이면 YES를 출력하고 회문 문자열이 아니면 NO를 출력하는 프로그램을 작성한다. 단 회문을 검사할 때 대소문자를 구분하지 않습니다.
< input example >
5
level
moon
abcba
soon
gooG
✔️ code
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
for i in range(n):
s=input().upper() #대소문자를 구분하지 않는다.
#reversed(s) 요소들을 join으로 다시 연결하여 문자열로 합쳐준다.
reverse_s=''.join(reversed(s))
if s==reverse_s:
print('#%d YES' % (i+1))
else:
print('#%d NO' % (i+1))
📍 파이썬 대문자 소문자 변경 함수
string.upper() #대문자
string.lower() #소문자
📍 파이썬 문자열 합치기/나누기 함수
string.split(구분자) #기본 공백으로 구분, 나누기
구분자.join(리스트) #합치기
for i in range(n):
s=input()
s=s.upper()
size=len(s)
#거꾸로 출력
#print(s[::-1])
#if s==s[::-1]:
# print()
#else:
# print()
#s[j] != s[-1-j]
for j in range(size//2):
if s[j]!=s[-1-j]:
print('#%d NO' % (i+1))
break
else:
print('#d YES' % (i+1))
>>>
if s[j] != s[-1-j] 는,
s의 index를 0과 -1, 1과 -2, 2와 -3 ... 를 비교해주는 방식이다.
범위는 문자열 길이의 절반까지만 반복해도 비교가 가능하다. (index 0~ 와 index -1~ 가 만나는 구간)
📍 string[::-1] 로 거꾸로 출력이 가능하다.
'알고리즘' 카테고리의 다른 글
[알고리즘] 카드 역배치 (0) | 2022.01.27 |
---|---|
[알고리즘] 숫자만 추출 (0) | 2022.01.24 |
[알고리즘] 점수계산 (0) | 2022.01.24 |
[알고리즘] 뒤집은 소수 (0) | 2022.01.21 |
[알고리즘] 소수 (0) | 2022.01.21 |