알고리즘 계산 복잡도는 두 가지 척도로 표현
-> 1) 시간 복잡도 : 얼마나 빠르게 실행되는지
-> 2) 공간 복잡도 : 얼마나 많은 저장 공간이 필요한지
통상 둘 다 만족시키기는 어려움
-> 시간과 공간은 반비례
-> 최근 대용량 시스템이 보편화, 공간 복잡도 보다는 시간 복잡도가 우선
-> 그래서 시간 복잡도가 중심
공간 복잡도 대략적인 계산은 필요함
-> 기존 알고리즘 문제는 예전에 공간 복잡도도 고려되어야할 때 만들어진 경우가 많음
-> 그래서 기존 알고리즘 문제에 시간 복잡도 뿐만 아니라, 공간 복잡도 제약이 있는 경우가 있음
-> 또한, 기존 알고리즘 문제에 영향을 받아서, 면접시에도 묻는 경우도 있음
공간 복잡도 예제1
N 팩토리얼 구하기
-> N! = 1 x 2 x ,,, x N
N에 값에 상관 없이 변수 n, fac, index만 필요함
공간 복잡도는 O(1)
공간 복잡도 계산은 실제 알고리즘 실행시 사용되는 저장공간을 계산하면 됨
def factorial(n):
fac = 1
for index in range(2, n+1):
fac = fac * index
return fac
공간 복잡도 예제2
재귀 함수를 사용하였으므로, n에 따라 변수 n이 n개가 만들어지게 됨
-> factorial 함수를 재귀 함수로 1까지 호출하였을 경우, n부터 1까지 스택에 쌓이게 됨
-> 공간복잡도는 O(n)
def factorial(n):
if n > 1:
return n * factorial(n-1)
else:
return 1
'Algorithms > 패캠 알고리즘 강의' 카테고리의 다른 글
퀵 정렬(1) (0) | 2020.01.24 |
---|---|
동적 계획법과 분할 정복 (0) | 2020.01.23 |
힙(2-1) (0) | 2020.01.22 |
힙(2) (0) | 2020.01.21 |
힙(1) (0) | 2020.01.21 |