이 글에서는 파이썬을 사용해 10진수를 2진수로 변환하는 방법에 대해 알아보겠습니다.
문제 정의
문제: 하나의 10진수가 주어졌을 때, 이를 이에 대응하는 2진수로 변환해야 합니다.
예를 들어, 10진수 56이 주어지면 결과는 111000이 되어야 합니다.
이 문제는 크게 두 가지 방식으로 해결할 수 있습니다. 하나씩 살펴보겠습니다.
방법 1: 재귀 함수(Recursive) 활용
재귀 호출을 이용하면 숫자를 2로 계속 나누면서 나머지를 출력하는 방식으로 자연스럽게 2진수를 구할 수 있습니다.
예제 코드
def DecimalToBinary(num):
if num > 1:
DecimalToBinary(num // 2)
print(num % 2, end='')
# 메인 코드
if __name__ == '__main__':
# 10진수 입력값
dec_val = 56
# 2진수 변환 및 출력
DecimalToBinary(dec_val)실행 결과
111000
동작 원리:
- 입력받은 수를 2로 나눈 몫(
num // 2)으로 재귀 호출을 먼저 수행합니다. - 재귀 호출이 끝난 뒤 현재 수를 2로 나눈 나머지(
num % 2)를 출력합니다. - 이렇게 하면 가장 높은 자릿수부터 차례대로 출력되어 올바른 2진수가 완성됩니다.
위 그림에서 볼 수 있듯이 모든 변수와 함수는 전역 범위(global scope)에서 선언되어 사용됩니다.
방법 2: 내장 함수 bin() 활용
파이썬에는 10진수를 2진수 문자열로 바꿔주는 내장 함수 bin()이 있습니다. 다만 bin()의 반환값 앞에는 0b라는 접두사가 붙기 때문에, 이를 제거하기 위해 replace() 메서드를 함께 사용합니다.
예제 코드
def decimalToBinary(n):
return bin(n).replace("0b", "")
# 드라이버 코드
if __name__ == '__main__':
print(decimalToBinary(56))실행 결과
111000
참고: bin(56)의 원래 반환값은 '0b111000'입니다. 여기서 replace("0b", "")를 통해 접두사를 제거하면 깔끔한 2진수 문자열인 '111000'만 얻을 수 있습니다.
이 방식 역시 위 그림과 같이 모든 변수와 함수가 전역 범위에서 선언되어 동작합니다.
마무리
이번 글에서는 파이썬 프로그램으로 10진수를 2진수로 변환하는 두 가지 방법, 즉 재귀 함수를 이용한 방법과 내장 함수 bin()을 이용한 방법을 알아보았습니다. 간단한 실습이나 알고리즘 학습에는 재귀 방식이 개념 이해에 도움이 되며, 실무에서는 내장 함수를 활용하는 것이 더 효율적입니다.