반응형
1. 알고리즘 성능이란,
같은 문제라도 접근하는 알고리즘은 다양하다.
어느 알고리즘이 더 좋은지 분석하기 위해, 복잡도를 정의하고 계산하게 되었다.
2. 알고리즘 복잡도 계산 항목
(1) 시간 복잡도: 알고리즘 실행 속도
(2) 공간 복잡도: 알고리즘이 사용하는 메모리 사이즈
* 가장 중요한 시간 복잡도를 이해하고 스스로 계산할 줄 알아야 한다!
3. 시간복잡도 계산하는 방법
반복문(for. while 등)을 기준으로 계산한다.
그 이유는, 입력 개수가 몇개인지에 따라 반복문 내부 코드가 반복되기 때문이다.
4. 알고리즘 성능 표기법
(1) Big O(빅오) 표기법: 최악의 실행시간을 표기하는 방법
(최악의 상황이라도 이정도 성능은 보장한다는 의미)
(2) 오메가 표기법: 최상의 실행시간을 표기하는 방법
(3) 세타 표기법: 평균 실행시간을 표기하는 방법
5. 대문자 O 표기법
O(1), O(𝑙𝑜𝑔𝑛), O(n), O(n𝑙𝑜𝑔𝑛), O(𝑛2), O(2𝑛), O(n!)등으로 표기
* 여기서 주의할 점,
n이 무한대로 발산한다고 가정하면 상수(1,2,3...)는 0에 가까울만큼 영향력이 줄어든다.
>> 시간 복잡도 함수가 n+1이나 n+100000이어도 모두 O(n)이라고 표현한다.
>> 시간 복잡도 함수가 2𝑛2 + 3n 이라면 O(𝑛2)
- 무조건 2회(상수회) 실행한다: O(1)
if n > 10: print(n)
- n에 따라, n번, n + 10 번, 또는 3n + 10 번등 실행한다: O(n)
variable = 1 for num in range(3): for index in range(n): print(index)
- n에 따라, 𝑛2번, 𝑛2 + 1000 번, 100𝑛2 - 100, 또는 300𝑛2 + 1번등 실행한다: O(𝑛2)
variable = 1 for i in range(300): for num in range(n): for index in range(n): print(index)
반응형
'코딩테스트 > 알고리즘 (Python) ★★★' 카테고리의 다른 글
[자료구조6] 힙 (0) | 2022.07.26 |
---|---|
[자료구조5] 트리 (0) | 2022.07.26 |
[자료구조4] 해시 구조 (0) | 2022.06.25 |
[자료구조2] 배열 큐 스택 (0) | 2022.06.14 |
[사전준비] 주피터노트북 환경 + 파이썬 문법에 익숙해지기 (0) | 2022.06.14 |