SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
어떤 문자열 S가 회문(palindrome)이라는 것은, 이 문자열을 앞에서부터 뒤로 읽은 것과 뒤에서부터 앞으로 읽은 것이 동일하다는 것을 의미한다. 예를 들어 “samsung”, “hello”는 회문이 아니지만, “abcba”, “asdffdsa”는 회문이다.
길이가 홀수 N인 어떤 문자열 S가 회문의 회문이라는 것은, 이 문자열이 아래 조건을 만족한다는 것을 의미한다.
- S는 회문이다.
- S의 처음 (N-1)/2글자가 회문이다.
- S의 마지막 (N-1)/2글자가 회문이다.
- 주어진 문자열이 회문의 회문인지 판별하는 프로그램을 작성하라.
입력
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스는 한 개의 줄로 이루어진다. 각 줄에는 길이가 3 이상 99 이하인, 알파벳 소문자(a-z)로만 이루어진 문자열 S가 주어진다.
출력
각 테스트 케이스마다, S가 회문의 회문이면 YES를, 그렇지 않다면 NO를 출력한다.
코드
for t in range(1, int(input())+1):
print(f'#{t}', end=' ')
word = input()
ans = 'NO'
if word == word[::-1]:
front_word = word[:(len(word)-1)//2] # 처음 (N-1)/2글자
back_word = word[(len(word) - (len(word)-1)//2):] # 마지막 (N-1)/2글자
if front_word == front_word[::-1] and back_word == back_word[::-1]:
ans = 'YES'
print(ans)
'알고리즘 > 백준' 카테고리의 다른 글
[Silver I] 오목 - 2615 (python) (0) | 2024.06.26 |
---|---|
[Silver I] 최대공약수 - 1850 (python) (0) | 2024.06.26 |
[D3] 파도반 수열 - 3376 (python) (0) | 2024.06.25 |
[D3] 문자열문자열 - 17319 (python) (1) | 2024.06.25 |
[D3] 합성수 방정식 - 16002 (python) (0) | 2024.06.25 |