늦은 프로그래밍 이야기

시간복잡도, 공간복잡도 본문

내일배움캠프/자료구조 알고리즘

시간복잡도, 공간복잡도

한정규 2022. 11. 9. 21:27

시간복잡도

시간복잡도

 1) 알고리즘을 실행할 때 걸리는 절대적인 시간이 아닌 알고리즘에서 수행하는 연산의 횟수.

 2) 입력값과 문제를 해결하는데 걸리는 시간과의 상관관계

 3) 각 줄이 실행되는 것을 1번의 연산이 된다고 생각.

 4) 최악의 경우의 연산값을 알 수 없는 경우에는 배열의 길이(N)

 5) 최악의 경우의 연산값을 알 수 있는 경우에는 그 값(상수)

 6) 시간복잡도 = CPU 효율과 관련


점근 표기법

Big O 표기법

 1) 최악의 성능이 나올 때 어느 정도의 연산량이 걸릴지.

 2) 시간복잡도 함수 : T(N)

 3) T(N)에서 최고차항만 남기고 최고차항의 계수를 버리고 표현. (상수를 버림)

 4) 

 - O(1) : 상수시간 알고리즘. 인풋 사이즈와 관계없이 스텝이 정해진 알고리즘. 문제를 해결하는데 오직 한단계만 처리함.

 - O(N) : 직선적 시간 알고리즘. 문제를 해결하기 위한 단계의 수와 입력값 N이 1:1 관계를 가짐.

                * 최악의 경우의 연산값을 알 수 없는 경우 N

 - O(N^2) : 2차시간 알고리즘. 문제를 해결하기 위한 단계의 수는 입력값 N의 제곱. 루프 안에서 루프를 실행. 배열의 각 아이템에 대해 루프를 반복 실행. (중첩 반복)

 - O(log N) : 선형로그형. 문제를 해결하기 위한 단계의 수가 n*(log2n) 번 만큼의 수행시간을 가진다.

 

Big Omega 표기법

 - 최선의 성능이 나올 때 어느 정도의 연산량이 걸릴지.

 - 입력값의 분포에 따라 성능이 변화할 수 있다.

    ex. 찾고자 하는 원소가 배열의 맨 처음에 있으면 1번만 연산하면 된다.

          찾고자 하는 원소가 배열의 맨 끝에 있다면 그 배열의 길이(N)만큼 연산해야 된다.

 - 입력값이 최선의 경우는 거의 없고 최악의 경우를 대비해야 한다.

 

따라서, 최악의 경우 시간이 얼마나 소요될지(Big O)에 대해 고민하자.


공간복잡도

 - 입력값과 문제를 해결하는데 걸리는 공간과의 상관관계

 - 저장하는 데이터의 양이 1개의 공간을 사용

 - 공간복잡도 = RAM 효율과 관련

 - 공간복잡도는 모두 상수라 알고리즘의 성능이 공간에 의해서 결정되지 않는다.

 

따라서 시간복잡도를 더 신경 써야 한다. 공간을 희생해서라도 시간복잡도를 줄여야 한다.


'내일배움캠프 > 자료구조 알고리즘' 카테고리의 다른 글

해쉬  (0) 2022.11.14
스택, 큐  (0) 2022.11.11
정렬  (0) 2022.11.10
Array, Linked List  (0) 2022.11.10
최대값 찾기, 최빈값 찾기  (0) 2022.11.09
Comments