Over the limit

시간 복잡도는 무엇이고 어떻게 구할까? 본문

Algorithm/Algorithm 공부

시간 복잡도는 무엇이고 어떻게 구할까?

ellapk 2021. 7. 15. 22:55

시간 복잡도란?

 

특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 의미한다.

문제를 풀다보면 실행시간안에 알고리즘이 마치지 않았다고 정답으로 체크하지 않는 경우를 볼 수 있다.

따라서 시간 복잡도를 잘 체크하여 문제를 풀어야 한다.

 

 

 

빅오 표기법

 

원하는 답이 나오지 않는다면 최대 얼마만큼의 시간이 걸릴까를 측정하기 위해

사용하는 것이 빅오 표기법이다. (Big-O)

입력데이터(n)에 따라 어떤 결과가 나올지, 각각의 함수를 통해서 알 수 있다.

 

 

 

시간 복잡도의 대표적인 종류

 

1 : 입력자료의 수에 관계없이 일정한 실행시간 갖음

 

Log N : 입력자료의 수에 따라 시간이 조금씩 증가함 - 주로 큰 문제를 일정한 크기를 갖는 작은 문제로 쪼갤 때 나타나는 유형 ex)이진 탐색

 

N : 입력 자료의 수에 따라 선형적인 실행 시간이 걸리는 경우

 

N log N : 이것은 주로 큰 문제를 일정한 크기를 갖는 문제로 쪼개고 (Log N), 다시 그것을 하나로 모으는 경우에 나타남

 

 :  이중루프내에서 입력자료를 처리할때 발생함.

 

 :  얘는 삼중 루프내에서 입력 자료 처리할때 발생. 

 

 

 

시간 복잡도 계산하기

 

명령이 끝날 때마다 실행 횟수를 적어본다.

void Func(int *a, n)
{
  int i=0,j=0; //1
  for(i=0;i<n-1;i++){ //n
    for(j=i+1;j<n;j++){ //(n-1)*n
      if(a[i]==a[j])a[j]=0; //(n-1)
	}
}

이후 실행 횟수를 모두 더한다 2n²-2n+2  ->상수는 생략하고 최고차항만 생각한다. => O(n²)로 표기합니다.

 

 

추가로 재귀함수의 시간 복잡도는, 재귀 호출이 불리는 횟수라고 볼 수 있다.

int Factorial(n)
{
  if(n==1) return 1;
  return n*Factorial(n-1);
}

Factorial(n) ->Factorial(n-1)...->Factorial(2)->Factorial(1)

은 즉 O(n)의 시간 복잡도

 

 

 

 

 

문제를 풀어보자.

시간 복잡도가 O(n2)인 경우 ex 삽입 정렬, 버블 정렬

2750번: 수 정렬하기 (acmicpc.net)

 

2750번: 수 정렬하기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

[Java] 백준 2750번 수 정렬하기 (tistory.com)

 

[Java] 백준 2750번 수 정렬하기

문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는

xean.tistory.com

 

 

 

 

 

 

 

 

 

 

 

참고)

 

[Algorithm] 알고리즘 시간복잡도에 대하여 (tistory.com)

 

[Algorithm] 알고리즘 시간복잡도에 대하여

시간복잡도란? 시간 복잡도란 특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 의미합니다. 같은 결과를 가져오는 프로그래밍 소스도 어떻게 작성하느냐에 따라 걸리는 시간이 달라질

coding-factory.tistory.com

cafielo :: 시간복잡도 개념 및 구하기 (tistory.com)

 

시간복잡도 개념 및 구하기

Intro 자료구조와 알고리즘을 배울때 핵심:  공간 ,  시간 이용 공간과 시간은 거의 항상 반비례하는 경향이있다. 시간복잡도: 어떤 알고리즘이 얼마나 걸리느냐(CPU사용량) 공간복잡도: 어떤 알

cafielo.tistory.com