공간복잡도(Space Complexity)란?
공간복잡도(Space Complexity)
- 알고리즘을 수행할 때 필요한 메모리의 총량
- Space Complexity = Auxiliary Space + Input Size Space
- Auxiliary Space는 알고리즘을 실행하면서 필요한 임시변수 등을 의미
- Input Size는 알고리즘에 전달되는 파라미터 값이나 문제해결을 하는데 사용되는 변수를 의미
프로그램의 메모리 사용
- 프로그램의 명령어들
=> 컴파일러에 의해 컴파일된 명령어 mov, sub, ...
- 환경적인 부분
=> A함수에서 B함수를 호출하면 A함수의 다음 위치 및 A함수에서 사용된 변수값들을 스택에 PUSH하고 B함수가 종료되면 A함수의 변수값들을 다시 POP해서 원래 내용대로 돌아오는 행위들
- 데이터 공간
=> 변수 또는 상수의 메모리 양
알고리즘에서 공간복잡도를 구할때 보통 데이터 공간을 이용하여 계산함
예시)
int sum(int a, int b){
return a + b;
}
위 예시에서 공간복잡도는 파라미터 a(4byte), 파라미터 b(4byte), return값(4byte)해서 총 12byte이며 빅-오를 이용하여 공간복잡도를 구하면 O(1)이 된다.
int sum(int arr[], int b){
int sum = 0;
for(int i=0; i<b; i++){
sum += arr[i];
}
return sum;
}
위 예시에서 공간복잡도는 파라미터 arr배열(4 * n), 파라미터 b(4byte), 지역변수 sum(4byte), 지역변수 i(4byte), return값(4byte)해서 총 4n + 16이며 빅-오를 이용하여 공간복잡도를 구하면 O(n)이 된다.
[참고사이트]
1. www.studytonight.com/data-structures/space-complexity-of-algorithms
'0x00. 자료구조' 카테고리의 다른 글
단순 연결 리스트 (0) | 2021.10.11 |
---|---|
순차 리스트 (0) | 2021.10.06 |
재귀(Recursion)란? (1) | 2021.05.08 |
시간복잡도(Time Complexity)란? (0) | 2021.04.30 |
자료구조란? (0) | 2021.04.25 |