알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
문제
[재귀함수를 활용한 이진수 출력]
10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하시오.
(단, 재귀함수를 이용하여 출력해야 함)
*입력 설명
첫 번째 줄에 10진수 N(1 ≤ N ≤ 1,000)이 주어진다.
*출력 설명
첫 번째 줄에 이진수를 출력한다.
풀이(Python)
답안
import sys
sys.stdin = open('AA/input_43.txt', 'rt')
def DFS(x):
if x == 0:
return
else:
DFS(x // 2)
print(x % 2, end=' ')
if __name__ == "__main__":
n = int(input())
DFS(n)
# 출력 : 1 0 1 1
input_43.txt(입력)
11
중요내용
- 여기서 DFS() 함수가 재귀함수이다.
- 재귀함수는 스택 자료구조를 사용한다.
- 위의 예시코드에서 재귀함수가 스택 자료구조를 활용하여 작동하는 원리를 이해하는 것이 중요하다. (이전 글 참고!!)
- 재귀함수의 return은 해당 함수를 종료해주는 기능을 한다.
- x % 2는 x를 2로 나눈 나머지를 반환해주는 코드이다.
- x // 2는 x를 2로 나눈 몫을 반환해주는 코드이다.
'알고리즘' 카테고리의 다른 글
Algorithm - 부분집합 구하기(DFS) (0) | 2021.12.16 |
---|---|
Algorithm - 이진트리 순회(DFS : Depth First Search) (0) | 2021.12.16 |
Algorithm - 재귀함수와 스택 자료구조(선수지식) (0) | 2021.12.14 |
Algorithm - 최대힙 (0) | 2021.12.09 |
Algorithm - 최소힙 (0) | 2021.12.09 |
댓글