이 글에서는 파이썬의 내장 함수를 활용하여 숫자의 이진 표현이 회문(palindrome)인지 확인하는 방법을 알아봅니다. 먼저 bin() 함수를 사용해 숫자를 이진수 형태로 변환한 뒤, 이진 문자열을 뒤집어 원래 값과 비교합니다. 두 값이 일치하면 회문이고, 그렇지 않으면 회문이 아닙니다.
예시
입력: 5 출력: palindrome
설명
숫자 5의 이진 표현은 101입니다.
이를 뒤집어도 101로 원래 값과 동일하게 유지됩니다.
따라서 5는 회문입니다.
알고리즘
Palindromenumber(n)
/* n은 입력받은 숫자 */
1단계: 숫자 n을 입력받는다.
2단계: n을 이진수 형태로 변환한다.
3단계: 문자열의 앞 두 글자('0b' 접두사)를 제거한다.
4단계: 이진 문자열을 뒤집어 원래 문자열과 비교한다.
5단계: 일치하면 Palindrome(회문)을 출력하고, 그렇지 않으면 회문이 아니라고 출력한다.
예제 코드
# 숫자의 이진 표현이 회문인지 확인하는 프로그램
def palindromenumber(n):
# 숫자를 이진수로 변환
bn_number = bin(n)
# bin() 함수는 이진 표현 앞에 '0b' 접두사를 붙이므로
# 문자열의 앞 두 글자를 제거
bn_number = bn_number[2:]
# 이진 문자열을 뒤집어 원래 값과 비교
if(bn_number == bn_number[-1::-1]):
print(n, "IS A PALINDROME NUMBER")
else:
print(n, "IS NOT A PALINDROME NUMBER")
# 메인 프로그램
if __name__ == "__main__":
n = int(input("Enter Number ::>"))
palindromenumber(n)
실행 결과
Enter Number ::>10 10 IS NOT A PALINDROME NUMBER Enter Number ::>9 9 IS A PALINDROME NUMBER
참고: 숫자 10의 이진 표현은 1010으로 뒤집으면 0101이 되어 원래 값과 다르므로 회문이 아닙니다. 반면 숫자 9의 이진 표현은 1001로 뒤집어도 1001이므로 회문에 해당합니다.