개념
양 끝에서 비교하기
팰린드롬은 앞에서 읽은 문자열과 뒤에서 읽은 문자열이 같은 문자열입니다. LEVEL과 ABBA는 팰린드롬입니다.
맨 앞과 맨 뒤 문자를 비교하고 두 위치를 안쪽으로 한 칸씩 이동합니다. 서로 다른 문자를 만나면 팰린드롬이 아닙니다. 두 위치가 만나거나 교차할 때까지 모두 같으면 팰린드롬입니다. 홀수 길이 문자열의 가운데 문자는 비교할 짝이 필요하지 않습니다.
LEVEL에서는 첫째·다섯째 문자인 L끼리, 둘째·넷째 문자인 E끼리 비교합니다. 두 쌍이 같고 가운데 V는 뒤집어도 자기 위치이므로 팰린드롬입니다. LEVER에서는 첫 쌍 L, R이 다르므로 바로 판정을 끝낼 수 있습니다.
문자열을 뒤집으면 위치 의 문자가 반대편 위치로 이동합니다. 따라서 모든 대칭 위치의 문자가 같은지 확인하는 것으로 문자열 전체가 같은지를 판별할 수 있습니다. 한 문자열 전체의 회문 여부를 검사할 때 이 방법을 사용합니다.
복잡도
문자열 길이를 이라고 합니다.
| 연산 | 시간복잡도 | 공간복잡도 |
|---|---|---|
| 양 끝 비교 | 추가 |
예제
문제
주어진 문자열이 팰린드롬인지 판별하여라.
입력
첫째 줄에 영어 대문자로 이루어진 문자열 가 주어진다. 길이는 이상 이하이다.
출력
팰린드롬이면 YES, 아니면 NO를 출력한다.