본문 바로가기
[개발] 알고리즘

공간복잡도

by Devsong26 2023. 12. 13.

프로그래밍에서 공간 복잡도(Space Complexity)는 알고리즘이 실행될 때 필요한 메모리 공간의 양을 나타내는 척도입니다. 이는 프로그램이 실행되면서 필요한 총 저장 공간을 의미하며, 일반적으로 입력 크기에 대한 함수로 표현됩니다. 

 

공간 복잡도를 이해하기 위해 몇 가지 주요 개념을 살펴보겠습니다:

  • 고정 공간(Fixed Space)
    • 이는 알고리즘의 입력 크기나 문제의 크기와 무관하게 고정된 양의 공간을 차지합니다. 예를 들어, 데이터 타입, 변수, 상수 등이 여기에 해당합니다.
  • 가변 공간(Variable Space)
    • 이는 문제의 크기나 입력의 크기에 따라 변하는 메모리 공간입니다. 예를 들어, 동적 할당, 재귀 스택 공간, 배열의 크기 등이 여기에 포함됩니다.

 

공간 복잡도는 다음과 같이 계산됩니다:

공간 복잡도 = 고정 공간 + 가변 공간

예를 들어, 간단한 선형 검색 알고리즘의 경우 고정 공간(변수들에 대한 공간)은 상수일 것이고, 가변 공간(입력 배열 크기)은 입력 크기에 비례합니다. 따라서 선형 검색의 공간 복잡도는 O(n)으로 표현될 수 있습니다, 여기서 n은 입력 배열의 크기입니다.

공간 복잡도를 최적화하는 것은 특히 메모리 자원이 제한적인 환경에서 중요합니다. 높은 공간 복잡도를 가진 알고리즘은 큰 입력 크기에서 메모리 부족 문제를 일으킬 수 있습니다. 따라서, 알고리즘을 선택하거나 설계할 때는 공간 복잡도도 성능과 같이 고려해야 합니다.

'[개발] 알고리즘' 카테고리의 다른 글

Runner 기법  (0) 2024.07.24
하노이탑  (0) 2023.12.19
시간복잡도  (0) 2023.12.13
백준 2292 - 벌집 자바로 풀기  (0) 2017.11.20
백준 1152 - 단어의 개수 자바로 풀기  (0) 2017.11.19