[Python] 코딩 도장 - 2진법으로 자연수 나타내기

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: 2진법으로 자연수 나타내기] - Lv.1

2진법이란, 어떤 자연수를 0과 1로만 나타내는 것이다.

예를 들어 73은 64(2^6)+8(2^3)+1(2^0)이기 때문에 1001001으로 표현한다.

어떤 숫자를 입력받았을 때 그 숫자를 2진법으로 출력하는 프로그램을 작성하시오.

출처: https://codingdojang.com/scode/556?answer_mode=hide


[풀이]

def bin_num(n):
    return int(bin(n)[2:])

bin_num(73)
1001001

bin() 함수를 쓰면 자연수를 2진법으로 표현할 수 있어서 숫자만 추출하게 만들었다.


[추천 풀이]

def binary(d): 
    return '' if d == 0 else binary(d // 2) + str(d % 2)

binary(73)
'1001001'

다른 분이 푸신 풀이 중 추천 수가 많은 풀이이다.

함수안에 같은 함수를 넣어 몫과 나머지를 더해주는 방식으로 코드를 짜셨다.

몫이 0이 될 때까지 반복되므로 문자형이 계속 더해져 2진법으로 출력되는 방식이다.

Leave a comment