[Algorithm/Python] 파이썬 2진수 변환 다양한 풀이 (Convert decimal to binary in python)

문제

양의 정수 n이 주어졌을 때, 이를 이진수로 변환하기

 

풀이

2진수 변환 함수 사용 ⭕️

binaryNum = format(n, 'b')
return binaryNum
  • format 이라는 함수를 이용한다.
  • 'b' 는 2진수를 뜻한다.
binaryNum = bin(n)
return binaryNum[2:]
  • bin 이라는 함수 이용한다면 'ob + 2진수 변환 수' 로 나오기 때문에 앞에 ob를 제거한 후 return 해준다.

2진수 변환 함수 사용 ❌

def getBinaryNum(n, lists):
    a, b = divmod(n, 2)
    lists.append(b)
    if a == 0 :
        return lists
    else :
        return getBinaryNum(a, lists)

answerList = []
answer = getBinaryNum(n,answerList)
answer.sort(reverse=True)

return "".join([str(_) for _ in answer])

  • 재귀 호출을 이용한 풀이이다.
  • 10진수를 2진수로 변환하는 방법은 n을 2로 나눈 나머지를 계속 기록하고, 을 계속 2로 나눠주는 것을 반복하는 방법이다.
  • divmod를 사용하면 몫과 나머지를 반환해준다. 나머지는 배열에 저장한 후 몫이 0이 될 때까지 재귀 호출로 반복해준다.

내장 함수 아예 사용 ❌

def getBinaryNum(n, lists):
    a = n // 2
    b = n % 2
    lists.append(b)
    if a == 0 :
        return lists
    else :
        return getBinaryNum(a, lists)

answerList = []
answer = getBinaryNum(n,answerList)
answer.sort(reverse=True)

return "".join([str(_) for _ in answer])

  • 풀이 2번에서 divmod() 함수도 제거한 풀이이다.
  • divmod가 몫과 나머지를 구해주는 함수이므로 몫과 나머지를 직접 구해주었다.

 

관련 문제

 

3460번: 이진수

양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.

www.acmicpc.net

 


 

코딩테스트에서는 내장함수를 사용하지 않고 직접 구현해보세요 ~

하는 문제가 자주 나오기때문에 .. 도전해보았다 ㅎㅅㅎ

@미닛메이드 Minnit