Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Python
- 게임
- JavaScript
- react
- Nest.js
- Bull
- OCR
- TypeScript
- 공룡게임
- AWS
- nodejs
- GIT
- MySQL
- typeORM
- 정렬
- Sequelize
- cookie
- Express
- MongoDB
- mongoose
- Dinosaur
- flask
- game
- jest
- dfs
- Queue
- class
- 자료구조
- nestjs
Archives
- Today
- Total
포시코딩
이중 for문의 시간복잡도 본문
728x90
예제를 통해 이중 for문의 시간복잡도를 구해보자
algorithm sum(A, n):
sum = 0 # 1번
for i=0 to n-1 do # n번
for j=i to n-1 do # 아래에서 설명
sum += A[i] * A[j] # 3번
return sum
각 for문의 돌아간 횟수
i | j |
0 | n |
1 | n-1 |
2 | n-2 |
... | ... |
n-1 | n-(n-1)=1 |
식으로 나타내기
for j=i to n-1 do
# 여기서 i가 n-1이라면 j=도 n-1이 되고 to n-1 즉, n-1이 n-1이 될 때 까지니까 한 번 돌게 된다.
# 규칙을 부여해서 찾는다면 n-(i의 시작 수)가 되니 n-(n-1)이 되어 n-n+1 즉, 1이 되는 방법도 있다.
결국 이중 for문의 횟수는 위 표의 j 밑에 있는 값들을 모두 더한게 된다.
거꾸로 1부터 ... n-2 + n-1 + n 이 되니 결국
= 1+2+...+n 이 되는거나 마찬가지
여기서 1부터 n까지의 합에 대한 공식을 적용하면 다음과 같다.
n(n+1) / 2
정리
결과적으로 시간복잡도는 T(n) = 3n2/2 + 3n/2 + 1이 된다.
728x90
'자료구조알고리즘 > 이론' 카테고리의 다른 글
일차함수(직선)의 기울기 공식 (0) | 2022.12.19 |
---|---|
최대공약수와 최소공배수의 관계 (유클리드 호제법) (0) | 2022.12.18 |
동적 계획법(Dynamic Programming) (0) | 2022.11.29 |
BFS(Breadth First Search) - 너비 우선 탐색 (0) | 2022.11.29 |
DFS(Depth First Search) - 깊이 우선 탐색 (0) | 2022.11.29 |