사실 이 문제는 재귀 함수를 쓸것도 없고 파이썬이라면 bin이라는 2진수로 바꾸는 함수가 내장되어 있어서 이거 그대로 쓰면 됩니다.
n = int(input())
a = bin(n)
print(a[2:])
다만 이진수를 표시하는 0b가 들어가서 그부분만 잘라내서 출력하게하면 통과는 합니다.
그래도 조건에 재귀를 써라고 했으니 재귀를 한번 써봅시다.
일단 10진수를 2진수로 어떻게 바꾸는지 봅시다.
정수가 들어오면 2로 나누게 되는데 2로 나눈 나머지에 의해서 결정되는 것을 볼 수 있습니다.
그러면 여기서 주의해야 할 것은 몫이랑 나머지를 잘 구분해야하는 거지요
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n = int(input())
bil=''
def binary(n):
global bil
if n==0:
bil+='0'
return
elif n==1:
bil+='1'
return
else:
bil+=str(n%2)
return binary(n//2)
binary(n)
print(bil[::-1])
bil이라는 문자열에다가 더하는 식으로 구하고자 합니다. n을 2로 나눈 ‘나머지’를 bil에다가 넣고
그 다음에 재귀를 호출하는 것은 n을 2로 나눈 몫을 던져주게 됩니다.
그러다가 0을 만나게되면 0을 더하고, 1을 만나게되면 1을 반환을 하고
평소 같으면 for문에다가 pop를 사용했을건데, 반복문은 사용못하니 리스트 슬라이싱을 이용해서 뒤쪽부터 불러줍시다.
Comments powered by Disqus.