이 글에서는 주어진 문제를 해결하기 위한 풀이 방법과 접근 방식을 알아보겠습니다.
문제 정의
문자열 입력이 주어졌을 때, 해당 문자열이 회문(palindrome)인지 아닌지를 판별하는 파이썬 함수를 만들어야 합니다.
회문이란 문자열을 거꾸로 뒤집었을 때 원래 문자열과 완전히 동일한 경우를 말합니다. 예를 들어 '78287'은 뒤집어도 '78287'이므로 회문입니다.
이 문제는 크게 두 가지 방법으로 해결할 수 있습니다.
- 슬라이싱(slicing)을 이용한 문자열 뒤집기
- 음수 인덱싱(negative indexing)을 이용한 비교
여기서는 그중 슬라이싱을 활용해 문자열을 뒤집는 방법을 중점적으로 살펴보겠습니다.
슬라이싱으로 문자열을 뒤집으려면 다음과 같은 구문을 사용합니다.
Str[ : : -1 ]
시작(start)과 끝(end) 매개변수는 지정하지 않고, 스텝(step) 값만 -1로 설정하는 방식입니다. 이렇게 하면 문자열이 뒤에서부터 한 글자씩 역순으로 추출됩니다.
그럼 실제 구현 코드를 살펴보겠습니다.
예제 코드
num = input('Enter any number : ')
try:
val = int(num)
if num == str(num)[::-1]:
print('The given number is PALINDROME')
else:
print('The given number is NOT a palindrome')
except ValueError:
print("That's not a valid number, Try Again !")실행 결과
Enter any number : 78287 The given number is PALINDROME
위 코드에는 예외 처리(exception handling)가 포함되어 있습니다. try-except 블록을 사용하여 입력값에 숫자가 아닌 문자가 포함된 경우 ValueError가 발생하도록 하고, 이때 적절한 안내 메시지를 출력합니다. 이를 통해 잘못된 입력으로 인해 프로그램이 비정상 종료되는 상황을 방지할 수 있습니다.
결론
이 글에서는 슬라이싱 기법과 예외 처리를 활용해 주어진 문자열(숫자)이 회문인지 판별하는 방법을 알아보았습니다. 슬라이싱의 step 값을 -1로 지정하면 간단히 문자열을 뒤집을 수 있으며, 이를 원본 문자열과 비교하는 것만으로도 회문 여부를 손쉽게 확인할 수 있습니다.