재귀함수를 이용한 이진수 출력
10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용해서 출력해야 합니다.
▣ 입력설명
첫 번째 줄에 10진수 N(1<=N<=1,000)이 주어집니다.
▣ 출력설명
첫 번째 줄에 이진수를 출력하세요.
▣ 입력예제 1
11
▣ 출력예제 1
1011
풀이
재귀함수를 이용한 풀이
2 / 11
2 / 5 --- 1
2 / 2 --- 1
/ 1 --- 0
- 몫이 1일 때까지 나눈 후 몫인 1을 출력
- 이때의 나머지 출력
- 스택에 쌓인 나머지 출력
순으로 하면 이진수를 출력할 수 있다.
코드
def DFS(x):
m = x//2
n = x%2
if m>1:
DFS(m)
print(n, end="")
elif m==1:
print(m, end="")
print(n, end="")
if __name__=="__main__":
n = int(input())
DFS(n)
풀이2
2 / 11
2 / 5 --- 1
2 / 2 --- 1
2 / 1 --- 0
/ 0 --- 1
계속 2로 나누고 몫이 0일때 멈추고
나머지만 계속 출력하는 방법도 있다.
스택
□ □
□DFS(0)- return □
□DFS(1)-7라인복귀 □
□DFS(2)-7라인복귀 □
□DFS(5)-7라인복귀 □
□DFS(11)-7라인복귀 □
□□□□□□□□□□□
코드2
def DFS(x):
if x==0:
return
else:
DFS(x//2)
print(x%2, end='')
if __name__=="__main__":
n = int(input())
DFS(n)
'⏰ 코딩테스트 > BFS, DFS' 카테고리의 다른 글
합이 같은 부분집합(DFS : 아마존 인터뷰) (0) | 2021.10.28 |
---|---|
부분집합 구하기(DFS) (0) | 2021.10.28 |
이진트리 순회(깊이우선탐색) (0) | 2021.10.27 |
재귀함수와 스택 작동 원리 (0) | 2021.10.26 |