TIL - 자료구조와 알고리즘 (24.03.14)
1. 시간복잡도
-입력값과 문제를 해결하는 데 걸리는 시간과의 상관관계
- 총 소요시간
2. 공간복잡도
- 입력값과 문제를 해결하는데 걸리는 공간과의 상관관계
- 메모리를 얼마나 차지하는가.
즉, 좋은 알고리즘은 시공간복잡도가 적게 나오는 것, 시공간복잡도의 낮은 방법을 찾는 것이 알고리즘
3. 재귀함수
- 실행 과정에서 자기 자신을 호출하는 함수
(1) 재귀함수는 언제 사용할까
- 비슷한 구조의 문제를 더 작은 문제로 나눌 경우
- 반복문이 중첩되거나, 그 횟수를 예측하기 어려운 경우
- 오류 발생을 줄이고자 하는 경우
재귀 코드 작성
def factorial(n):
if n <= 1:
return 1
else:
return n* factorial(n-1)
n = int(input())
print(factorial(n))
#팩토리얼을 구하는 함수가 있을시, 5를 재귀해본다면
#/////////////////
#5
#5*4
#5*4*3
#5*4*3*2
#5*4*3*2*1
#1은 재귀 해주지 않아도 되므로 종료
단점 - 재귀함수의 종료 조건을 설정해 주지 않는다면, 계속 반복하게 될 수 있다.
장점 - 직관적으로 간단하게 구현할 수 있다.
'개발 일지' 카테고리의 다른 글
CS 강의 1강 정리 (2) | 2024.03.18 |
---|---|
TIL(24.03.15) (1) | 2024.03.15 |
TIL(24.03.13) (0) | 2024.03.13 |
TIL(24.03.12) (1) | 2024.03.12 |
TIL(24.03.11) (0) | 2024.03.11 |