본문 바로가기
개발 일지

알고리즘

by 만식 2024. 3. 14.

 

 

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