- 빅 오 (O) : 최악일 때의 연산 횟수, 주어진(최선/최악/평균) 경우의 수행 시간의 상한
- 시간 복잡도 : 가장 많이 중첩된 반복문의 수행 횟수를 기준으로
- 연산횟수 = 알고리즘 시간 복잡도 n값에 데이터의 최대 크기를 대입하여 도출
- 대부분의 경우 시간과 공간은 트레이드오프 관계 (실행시간이 빠른 알고리즘은 공간을 많이 사용)
- O(1) : 입력값이 아무리 커도 실행 시간은 일정 (해시테이블의 조회 및 삽입)
- O(logN) : 로그는 매우 큰 입력값에도 크게 영향 받지 않는 편 (이진검색)
- O(N) : 입력값만큼 실행 시간에 영향, 알고리즘을 수행하는 데 걸리는 시간은 입력값에 비례 (정렬되지 않은 리스트에서 최대/최솟값)
- O(NlogN) : 병합 정렬을 비롯한 대부분 효율 좋은 정렬 알고리즘
- O(N^2) : 버블 정렬 같은 비효율적인 정렬 알고리즘
- O(2^N) : 피보나치 수를 재귀로 계산하는 알고리즘
- O(N!) : 각 도시를 방문하고 돌아오는 가장 짧은 경로를 찾는 외판원 문제(Travelling Salesman Problem, TSP)를 부르트 포스로 풀이할 때
* python 프로그램 1초 : 2000만번~1억번 연산 (worst인 1초에 2000만번으로 기준)
정렬:
- python A.sort(): O(NlogN)
- 버블 정렬 : O(N^2)
- 병합 정렬 : O(NlogN)
탐색:
binary search : O(logN)
[ 입력 크기 확인 ]
- 원본 데이터는 그리 크지 않지만, 질의의 개수가 엄청 크다 ???
>> 한번 정답판 만들어 놓고 질의가 오면 바로 답을 출력하는 형태 (가능성 높음)
'! > 코테!' 카테고리의 다른 글
파이썬 문법 참고 ! (3) | 2024.09.07 |
---|---|
디버깅 (0) | 2024.09.06 |
백준허브 사용하기 (0) | 2024.08.22 |
(이코테 2021 강의 몰아보기) 6. 다이나믹 프로그래밍 (0) | 2024.06.16 |
(이코테 2021 강의 몰아보기) 5. 이진 탐색 (0) | 2024.06.14 |