문제
- 주어진 n개의 수만큼 문자를 입력하고 그 문자가 회문인지를 판단하라
- 이때 대소문은 구분하지 않는다.
- 회문이란?
- 앞으로 해도 거꾸로해도 똑같은 것을 의미한다. like 이효리~!(이효이)
문제 풀이 - 1
import sys
sys.stdin = open("input.txt", "r")
n = int(input())
for i in range(n):
s = input()
s = s.lower()
size = len(s)
for j in range(size//2):
if s[j] != s[-j-1]:
print(f"#{i+1} NO")
break
else:
print(f"#{i+1} YES")
- 문자열 길이의 절반만 검증하는 이유는 앞에서 뒤에서 같이 오기 때문이다.
- 해당 문자열 길이의 몫 값만큼만 반복문을 돌면 된다.
- 한 글자라도 다르다면 회문이 아니기 때문에 NO를 출력해준 뒤 break로 반복문을 중단 시킨다.
- for문이 정상적으로 돌았다면 YES를 출력해준다.
문제 풀이 - 2
import sys
sys.stdin = open("input.txt", "r")
n = int(input())
for i in range(n):
s = input()
s = s.lower()
if s == s[::-1]:
print(f"#{i+1} YES")
else:
print(f"#{i+1} NO")
- s[::-1]는 문자열을 완전히 뒤집은 상태를 말하기에 이를 비교해서 같으면 회문, 아니라면 회문이 아닌 단어가 된다.
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
[탐색][시뮬레이션] - 카드 역배치(List) (0) | 2022.07.01 |
---|---|
[탐색][시뮬레이션] - 숫자만 추출(String) (0) | 2022.07.01 |
점수 계산 (0) | 2022.06.30 |
주사위 게임 (0) | 2022.06.30 |
뒤집은 소수 (0) | 2022.06.30 |