| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- dfs
- 딕셔너리
- 어플리케이션 클래스 로더
- 부트스트랩 클래스 로더
- 백준
- 컴포넌트 스캔
- 코딩테스트
- 알고리즘
- 플랫폼 클래스 로더
- 다이렉트 레퍼런스
- AWS SAA-C03 합격후기
- getreference
- aws saa-c03
- 자료구조
- 2026 AWS SAA-C03
- 자바
- python list method
- 파이썬
- 클래스 로더 계층
- BFS
- 심볼릭 레퍼런스
- 스프링
- java
- 파이썬 리스트 메서드
- Spring
- 파이썬 문자열 메서드
- stop the world
- python
- 스프링 컨테이너
- 객체지향
- Today
- Total
클라우드 낚시꾼
[알고리즘] 시간 복잡도 분류와 점근적 분석 본문
시간 복잡도의 분류

위의 모토에 따르면, 시간 복잡도는 아래와 같이 3가지로 분류된다.
1. 최악 경우 시간 복잡도(worst case)
모든 입력에 대해서 기본 연산이 수행되는 최대 횟수
2. 최선 경우 시간 복잡도(best case)
모든 입력에 대해서 기본 연산이 수행되는 최소 횟수
3. 평균 경우 시간 복잡도(average case)
모든 입력에 대해서 기본 연산이 수행되는 평균 횟수

예제로 순차 탐색 알고리즘 각 시간 복잡도를 구해보자.
1. 최악 경우시간 복잡도(worst case)
모든 입력에 대해 가장 마지막에 탐색을 성공하는 N
2. 최선 경우 시간 복잡도(best case)
모든 입력에 대해 가장 첫 번째에 탐색을 성공하는 1
3. 평균 경우 시간 복잡도(average case)
평균 경우 시간 복잡도는 (최악 시간 복잡도 + 최선 시간 복잡도 / 2) = (N + 1) / 2 번이다.
점근적 분석과 복잡도 함수

점근적 분석과 복잡도 함수를 이해하기 위해 위의 그래프를 분석해보자. Input Size가 작을 때는 시간 복잡도 차이가 거의 없다. 그래서 입력이 작을 때는 알고리즘의 효율성이 크게 중요한 항목이 아니다. 하지만, Input SIze가 점점 커짐에 따라 시간 복잡도 차이가 커진다. 그러므로, 입력이 커질 때는 알고리즘을 어떻게 효율적으로 개발하느냐에 따라 알고리즘의 성능이 좌지우지 된다.
알고리즘의 시간 복잡도를 분석할 때는 입력 크기가 큰 경우를 고려해야 한다. 이를 점근적 분석(Asymptotic Analysis)이라고 한다.
어떤 알고리즘 코드를 점근적 분석하면 복잡도 함수가 도출된다. 코드에서 복잡도 함수를 구할 때는 아래와 같은 3가지 규칙을 따른다.
- 복잡도는 입력 크기의 N의 함수로 나타낸다.
- 복잡도 함수는 보통 여러 개의 항을 갖는 다항식이다.
- 고차 항이 궁긍적으로 시간 복잡도를 지배한다.
'CodingTest > Algorithm' 카테고리의 다른 글
| [알고리즘] 코딩테스트 팁, 공부법 (1) | 2024.01.10 |
|---|---|
| [알고리즘] 시간 복잡도의 점근적 표기 이해(Big-O,Big-Omega,Big-Theta) (1) | 2023.10.05 |
| [알고리즘] BFS(너비 우선 탐색) 개념 (0) | 2023.10.04 |