[Algorithm] 시간 복잡도
이번 포스팅에서는 시간 복잡도에 대해서 알아보겠습니다.
1. 시간복잡도란(Time Complexity)
정의
: 컴퓨터과학 용어로, 컴퓨터 프로그램의 입력값과 연산 수행 시간의 상관관계를 나타내는 척도이다.
- 시간 복잡도를 이용하면 작성한 코드가 시간이 대략 얼마나 걸릴지 예상할 수 있다.
- 표기법으로는 대문자 O를 사용한다.(영어로는 Big O Notation)
- 입력 값 크기(N)에 대해서 시간이 얼마나 걸리는지 나타내는 방법
- 즉, 최선의 경우, 중간의 경우, 최악의 경우에 시간이 얼마나 걸리는지도 알 수 있다.
2. 시간복잡도의 종류
종류
- 1초가 걸리는 입력의 크기
- O(1): 1초
- O(N): 1억
- O(log N)
- O(N^2): 1만
-
Big O Notation에서 상수는 버리고 시간 복잡도를 계산한다
(예시) - O(5) = O(1)
- O(2N^2) = O(N^2)
예시
시간복잡도 O(1)
- 1부터 N까지의 합을 계산하는 코드
시간복잡도 O(N)
- 1부터 N까지의 합을 계산하는 코드
시간복잡도 O(N^2)
- 1부터 N까지의 합을 계산하는 코드