이 글에서는 십진수를 이진수로 변환하는 문제를 해결하기 위한 두 가지 접근 방식과 그 구현 방법을 자세히 알아보겠습니다.
문제 정의
십진수로 표현된 숫자가 하나 주어졌을 때, 이를 해당하는 이진수로 변환하는 것이 목표입니다.
접근 방법 1 – 재귀 함수 활용
첫 번째 방법은 재귀(recursion)를 이용하는 것입니다. 숫자를 2로 나눈 몫을 재귀적으로 호출하고, 나머지를 차례대로 출력하면 이진수가 완성됩니다.
DecToBin(num):
if num > 1:
DecToBin(num // 2)
print num % 2
예제 코드
def DecimalToBinary(num):
if num > 1:
DecimalToBinary(num // 2)
print(num % 2, end = '')
# main
if __name__ == '__main__':
dec_val = 35
DecimalToBinary(dec_val)
실행 결과
100011
위 예제에서는 숫자 35를 입력했을 때 100011이라는 이진수가 출력되는 것을 확인할 수 있습니다. 재귀 호출이 먼저 실행된 후 나머지가 출력되기 때문에, 가장 높은 자릿수부터 순서대로 화면에 표시됩니다.
접근 방법 2 – 내장 함수 bin() 활용
파이썬은 십진수를 이진수로 변환해 주는 내장 함수 bin()을 기본적으로 제공합니다. 다만 bin() 함수는 결과값 앞에 '0b'라는 접두사를 붙이므로, replace() 메서드를 사용해 이를 제거하면 깔끔한 이진수 문자열을 얻을 수 있습니다.
예제 코드
def decimalToBinary(n):
return bin(n).replace("0b", "")
# Driver code
if __name__ == '__main__':
print(decimalToBinary(35))
실행 결과
100011
내장 함수를 활용하면 단 한 줄의 코드로도 동일한 결과를 얻을 수 있어, 실무에서 간단히 변환할 때 매우 유용합니다.
결론
이 글에서는 재귀 함수를 직접 구현하는 방법과 파이썬 내장 함수 bin()을 활용하는 방법, 총 두 가지 방식으로 십진수를 이진수로 변환하는 과정을 살펴보았습니다. 원리를 학습하고자 한다면 재귀 구현을, 빠르고 간결한 처리가 필요하다면 내장 함수를 사용하는 것이 좋습니다.