Programming/알고리즘 & 코테

시간 복잡도 측정하기(빅오 표기법, 시간 메모리 측정 방법)

kk_______yy 2023. 12. 8. 09:54

빅오 표기법

빅오 표기법 명칭
O(1) 상수시간(Constant time)
O(logN) 로그시간(Log time)
O(N) 선형시간
O(NlongN) 로그선형시간
O(N^2) 이차 시간
O(N^3) 삼차시간
O(2^n) 지수 시간

*시간 복잡도가 낮은 순서로 작성

 

일반적인 시간 제한이 1초인 문제에 대한 예시

  • N의 범위가 500인 경우 : 시간 복잡도가 O(N^3)인 알고리즘 설계
  • N의 범위가 2,000인 경우 : 시간 복잡도가 O(N^2)인 알고리즘 설계
  • N의 범위가 100,000(10만)인 경우 : 시간 복잡도가 O(NlogN)인 알고리즘 설계
  • N의 범위가 10,000,000(1000만)인 경우 : 시간 복잡도가 O(N)인 알고리즘 설계

 

시간과 메모리 측정

공부하는 과정에서 실질적인 소요 시간을 확인하여 알고리즘을 점검해보는 것이 좋다.

 

import time
start_time = time.time() # 측정 시작(소스코드 제일 앞부분)

##### 프로그램 소스코드 #####

end_time = time.time() # 측정 종료(소스코드 제일 끝부분)
print("time :", end_time - start_time) # 수행 시간 출력