문제
양의 정수 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가 몫과 나머지를 구해주는 함수이므로 몫과 나머지를 직접 구해주었다.
관련 문제
코딩테스트에서는 내장함수를 사용하지 않고 직접 구현해보세요 ~
하는 문제가 자주 나오기때문에 .. 도전해보았다 ㅎㅅㅎ
@미닛메이드 Minnit
'Develop > Algorithm' 카테고리의 다른 글
[Algorithm/Python] 파이썬 소수 찾기(Python Program to Check Prime Number using Sieve of Eratosthenes) (0) | 2021.03.05 |
---|---|
[Algorithm/Python] 파이썬 최대공약수와 최소공배수 구하기 ( 유클리드 호제법 ) (0) | 2021.03.05 |
[Algorithm/Python] 파이썬 약수 구하기 (시간복잡도 줄여보기) (0) | 2021.03.03 |
[Python/프로그래머스/Level3] 최고의 집합 (0) | 2021.02.23 |
[Python/프로그래머스/Level2/KAKAO] n진수 게임 (1) | 2020.10.25 |
Comment