본문 바로가기

면접대비

[면접대비] 공간 복잡도(Space complexity)

공간 복잡도

알고리즘이 얼마나 많은 메모리를 소모하는가.

메모리 소모와 빅 오 표기법

  • newArray 등 새로운 배열을 원소 N개에 따라 생성하는 경우: O(N)
  • 새로운 배열을 생성하지 기존 배열의 원소를 바꾸는 경우: O(1)
  • 추가로 소모한 공간은 보조 공간(auxiliary space)라 부른다.
  • 입력도 포함하여 공간 복잡도를 계산하는 경우도 있다. 이 경우도 틀린 경우는 아니다.

시간 복잡도와 공간 복잡도의 선택

  • 애플리케이션이 매우 빠르고, 처리할 메모리가 충분하다면 시간복잡도가 낮은 경우가 적절하다.
  • 속도는 크게 중요하지 않지만 메모리를 절약해야 하는 경우 공간복잡도가 낮은 경우가 적절하다.
  • 근본적으로는 최소 허용 속도와 메모리 한도를 아는 것이 좋다.

재귀함수와 공간 복잡도: O(N)

재귀함수를 호출하는 경우 호출 스택에 항목을 추가한다.

가장 마지막 재귀함수가 실행될 때까지 모든 호출이 쌓이는 것이다.

따라서 재귀 함수는 재귀 호출 횟수만큼 단위 공간을 차지한다.

루프, 퀵 정렬과 공간 복잡도

루프로 동일한 동작을 한다면 메모리를 추가로 차지하지 않는다.

퀵 정렬은 O(logN) 번의 재귀 호출을 수행하므로 최고점에서 호출 스택 크기가 log(N)이다.

 

 

'면접대비' 카테고리의 다른 글

[면접대비] 힙(heap)  (3) 2024.08.28
[면접대비] 퀵정렬  (0) 2024.08.27
[면접대비] 재귀함수  (0) 2024.08.26
[면접대비] Stack, Queue와 Javascript 예제  (0) 2024.08.23
[면접대비] Array, Linked List  (0) 2024.08.21