알고리즘/시간복잡도
[시간복잡도] 점근적 표기법과 시간복잡도 개념
GOMSHIKI
2024. 3. 15. 13:21
반응형
점근적 표기법
점근적 표기법에는 크게 , ,
예시 다항식 : n^3+n^2+n−1
- O(빅-오)에서는 가장 높은 차수보다 같거나 높은 식을 뜻합니다.
- O(n^3), O (n^6) O(n^100) 모두 표현 가능하지만, 타이트하게 O(n^3)으로 라고 결정합니다.
-
-
대입과 조건문의 시간복잡도
코드의 실행 횟수를 점근적 표기법으로 추상적으로 표현할 수 있는데 이것을 시간복잡도라고 부릅니다.
set a = 5 // O(1)
if a != 10 // O(1)
print('hello') // O(1)
상기 코드의 시간 복잡도를 계산해보면 다음과 같습니다. print 메서드를 O(1)로 가정한다면, 대입(set a= 5)도 O(1)이고, print 도 O(1)입니다. if a !=10 도 단순히 한번 두 값을 비교연산을 수행하기에 O(1)입니다.
따라서 상기 코드의 시간복잡도는 O(1) 입니다.
참고사항
for loop를 1억번(100,000,000) 도는데 걸리는 시간은 약 1초입니다.
제한 시간이 1초인 경우에 구현할 코드의 시간복잡도를 O로 계산했다고 가정하면,
N의 범위에 따라 제한 시간안에 처리할 수 있는지 파악할 수 있습니다.
N의 범위 | 수행 가능한 시간복잡도 | 계산식 |
N≤10 | , , | |
N≤20 | O(2^N) | 2^20 = 1,048,576 |
N≤100 | O(N^4) | 100^4 = 100,000,000 |
N≤500 | O(N^3) | 500^3 = 125,000,000 |
N≤1,000 | , | |
N≤100,000 | , , , |
반응형