시간 복잡도와 공간 복잡도 이해: Big O 표기법 및 알고리즘 성능 분석
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

시간 복잡도 및 공간 복잡도 이해

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

- 소프트웨어 개발자 (중간 수준): 알고리즘 성능 분석 및 최적화를 위한 기초 지식 습득

- 기초 이해 필요: Big O 표기법, 시간/공간 복잡도 개념

핵심 요약

  • 시간 복잡도: 알고리즘의 실행 시간이 입력 크기와의 관계를 나타냄 (예: O(1), O(n), O(n²)).
  • 공간 복잡도: 알고리즘 실행 시 추가 메모리 사용량을 나타냄 (예: O(1)은 고정 메모리, O(n)은 입력에 비례).
  • Big O 표기법: 알고리즘 성능을 일반화하여 표현 (예: O(log n)은 이진 탐색).

섹션별 세부 요약

1. 시간 복잡도의 핵심 개념

  • O(1) (상수 시간): 입력 크기와 관계없이 실행 시간이 동일 (예: 배열의 첫 번째 요소 접근).
  • O(n) (선형 시간): 입력 크기와 비례하여 실행 시간 증가 (예: 배열의 최대값 찾기).
  • O(n²) (제곱 시간): 중첩 루프로 인해 입력 크기 증가 시 성능 급격히 저하 (예: 모든 중복 쌍 찾기).
  • O(log n) (로그 시간): 문제를 반복적으로 절반으로 줄여 가며 처리 (예: 이진 탐색).

2. 공간 복잡도의 핵심 개념

  • O(1) (상수 공간): 입력 크기와 무관한 고정 메모리 사용 (예: 배열 합 계산).
  • O(n) (선형 공간): 입력 크기와 비례하여 추가 메모리 사용 (예: 배열의 두 배 값으로 새로운 배열 생성).

3. 실무 예시 및 측정

  • JavaScript/C# 예시: 다양한 복잡도의 알고리즘을 테스트해 실행 시간 및 메모리 사용량 비교 (예: O(1)은 1000개/100만 개 배열 모두 동일한 시간).
  • 시간 복잡도 비교: 동일한 입력 크기에서 O(1) < O(log n) < O(n) < O(n log n) < O(n²) 순으로 실행 시간 증가.

결론

  • 핵심 팁: 알고리즘 선택 시 시간/공간 복잡도를 고려해 성능을 최적화 (예: O(n²) 알고리즘은 데이터 크기가 클 때 피해야 함).
  • 예시: 이진 탐색(O(log n))은 대규모 데이터에서 효율적이며, 배열 접근(O(1))은 최적의 성능 제공.