시간 복잡도
시간복잡도란 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 의미
빅오 O() 표기법
- 최악의 경우를 계산하는 방식
- 아무리 많은 시간이 걸려도 이 시간 안에는 끝난다
O(1) 상수형
- 입력 데이터의 크기에 상관없이 일정한 시간이 걸리는 알고리즘
O(log₂ n) 로그형
- 입력 데이터의 크기가 커질수록 처리 시간이 로그 만큼 짧아지는 알고리즘
- 이진탐색, 재귀가 순기능으로 이루어지는 경우
- 데이터가 10배가 되면 처리시간은 2배
O(n) 선형
- 입력 데이터의 크기에 비례해 처리 시간이 증가하는 알고리즘
- for문 하나의 경우
- 데이터가 10배가 되면 처리시간도 10배
O(n log₂ n) 선형 로그형
- 입력 데이터의 크기가 커질수록 처리 시간이 로그 배만큼 늘어나는 알고리즘
- 병합 정렬, 퀵정렬의 경우
- 데이터가 10배가 되면 처리시간은 20배
O(n²) 2차제곱형
- 입력 데이터의 크기가 커질수록 처리시간이 급수적으로 늘어나는 알고리즘
- for문 두개의 경우
- 데이터가 10배가 되면 처리시간은 100배
O(2ⁿ) 지수형
- 입력 데이터의 크기가 커질수록 처리시간이 기하급수적으로 늘어나는 알고리즘
- 재귀의 역기능으로 이루어지는 경우
O(n!) 팩토리얼형
- 처리시간이 기하급수적으로 늘어나는 알고리즘
시간 복잡도를 줄이는 방법
1. 반복문을 최소화
2. 상황에 맞는 자료구조와 알고리즘을 사용
'자료구조, 알고리즘 문제 풀이 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 여행경로 (깊이/너비 우선 탐색 DFS/BFS) (0) | 2022.02.21 |
---|