위키득계정 ↗
기술

공간 복잡도

공간 복잡도기술
영문명
Space complexity
주요 변수
입력 크기 n
흔한 구별
전체 공간과 보조 공간
확인 대상
배열, 저장 결과, 호출 스택 등
공간 복잡도는 입력 크기에 따라 알고리즘이 필요로 하는 메모리 공간이 어떻게 증가하는지 나타내는 척도다. 입력 자체를 포함하는 전체 공간과 계산 중 추가로 쓰는 보조 공간을 구별해야 한다.

추가 배열의 비용

n개 원소를 새 배열에 모두 복사하면 원소 크기를 일정하게 보는 모형에서 O(n) 보조 공간이 필요하다. 원소 두 개를 바꾸기 위한 임시 변수 하나는 O(1) 보조 공간으로 볼 수 있다.

재귀 호출의 공간

코드에 새 배열이 없어도 재귀 호출마다 지역 상태를 저장할 수 있다. 호출 깊이가 n이라면 프레임 크기가 일정한 일반 구현에서 O(n) 스택 공간이 필요하다. 실제 구현의 최적화 여부와 분석 가정도 확인한다.

시간과의 교환

이미 계산한 결과를 저장하는 메모이제이션은 중복 계산을 줄이는 대신 저장 공간을 사용한다. 더 빠른 알고리즘이 항상 더 적은 메모리를 쓰는 것은 아니다. 시간과 공간 요구를 함께 비교해야 한다.

측정 범위를 명시

입력 배열을 제외한 보조 공간이 O(1)이어도 입력 자체의 저장량은 O(n)일 수 있다. 결과 전체를 저장하는지 차례로 출력하는지도 공간 사용에 영향을 준다. 같은 알고리즘의 설명이라도 포함 범위가 다르면 수치가 달라 보일 수 있다.

관련 문서

알고리즘 / 배열 / 재귀 / 스택 / 메모이제이션 / 시간 복잡도 / 힙 정렬 / 병합 정렬