- 10진수 n을 입력받아 2진수로 변환하여 문자열로 반환하는 함수를 완성하라
- 두 가지 접근법이 있다.
- 반복문, 재귀함수를 사용할 수 있다.
# 반복문을 통한 풀이
def dec_to_bin(n):
# 가독성을 위해, 입력받은 값을 quotient 변수에 저장한다.
quotient = n
# 결과를 저장하기 위해 result 변수에 빈 문자열을 넣는다.
result = ''
while quotient > 0:
# divmod() 를 활용하여, quotient엔 2로 나눈 몫을, remainder엔 나머지를 저장한다.
quotient, remainder = divmod(quotient, 2)
# result 빈 문자열에 나머지를 str로 변환한 값을 더해준다. 이 때, 더해지는 순서에 유의한다.
result = str(remainder) + result
# 몫이 0이 될 때까지 반복한 후, 결과값을 리턴한다.
return result
# 재귀함수를 통한 풀이
def dec_to_bin(n):
if n < 2:
# base case에 해당하는 경우로, 1이나 0이 입력되면 그 수 자체를 반환하도록 한다.
return str(n)
else:
# base case이외의 경우로, 입력값을 2로 나눈 결과 앞에 입력값을 2로 나눈 몫을 인자로 재귀함수를 호출한다.
return dec_to_bin(n//2) + str(n%2)
댓글