Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 숫자의 이진 표현이 회문인지 확인하는 방법

이 글에서는 파이썬의 내장 함수를 활용하여 숫자의 이진 표현이 회문(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이므로 회문에 해당합니다.