자료구조 & 알고리즘

Python : 시간 복잡도

머기조 2023. 3. 6. 11:22

<Python 사용 시의 '자료형', '연산자', '메소드'에 따른 시간 복잡도 정리>

 

Python에서는 초당 2,000만 회의 연산이 가능하다고 가정

 

Pypy3 사용 시, 동일 시간에 더 많은 연산이 가능하지만(빠르지만), 코딩테스트 진행 시 사용이 제한될 수도  있으므로 Python3 제출을 기준으로 학습하는 것이 좋음

https://velog.io/@jehjong/

 

빅오(Big-O) 표기법에 대하여

연산 시간의 복잡한 정도를 빅오(Big-O) 표기법으로 나열

: O(1) < O(log(n)) < O(n) < O(nlog(n)) < O(n^2) < O(2^n) < O(N!)

 

https://velog.io/@zxcvbnm5288

 

단순하게 생각해서,

print()를 N번 반복하는 코드가 있다고 하자. print()를 동작하는 것은 상수 시간만큼 걸린다. 즉, O(1)의 시간.

이를 N번 반복하면 -> O(1) * N 이라고 생각할 수 있다. 즉, 이러한 경우에는 O(N) 만큼의 시간이 걸리는 것.

겉보기에 단순한 코드도 이중으로 반복 동작을 하게 되면, O(N^2)의 아주 복잡한 수준의 시간이 걸리게 된다.

상대적으로 느린 시간을 자랑하는 파이썬으로 알고리즘을 풀이하는 경우, 이는 치명적일 수 있다.

 

 

Python 자료형에 따른 연산자 시간 복잡도

리스트(list) / 튜플(tuple)

https://chancoding.tistory.com/

 

집합(set)

https://chancoding.tistory.com/

 

딕셔너리(dict)

https://chancoding.tistory.com/