(Python) List, Dict, Set 객체의 메소드 당 시간 복잡성 정리

  • by


📚 List, Dict, Set 객체의 메소드별 시간 복제도 정리

일반적으로 Python이 제공하는 기능을 이용하여 소스 코드를 작성하거나 PS(Problem Solved)를 하는 경우가 많지만 시간의 복잡성을 고려하여 효율적으로 작성하면 프로그램 실행 및 코딩 테스트에서 효율성 문제에 큰 이점을 줄 수 있습니다.

그렇기 때문에 내용을 정리해 투고했습니다.

🔖 아래 표는 각 객체에 대해 (목적/예/시간 복잡도/기타) 순서로 정리되어 있습니다.

📒 List

l = list() 라고 생각한 다음의 예입니다.

Operation
Big-O
Notes
색인
l(i)
O(1)
스토어
l(i) = 0
O(1)
길이
len(l)
O(1)
Append
l.append(5)
O(1)
l.pop()
O(1)
l.pop(-1)과 동일
Clear
l.clear()
O(1)
l = ()와 유사
Slice
l(a:b)
O(ba)
l(:) : O(len(l)-0) = O(N)
Extend
l.extend(…)
O(len(…))
확장 길이에 따라
건설
list(…)
O(len(…))
요소의 길이에 따라
check ==, !
=
l1 == l2
O(N)
비교
삽입
l.insert(i, v)
O(N)
i 위치에 v 추가
Delete
del l(i)
O(N)
Remove
l.remove(…)
O(N)
Containment
x in/not in l
O(N)
검색
복사
l.copy()
O(N)
l(:) 와 동일 – O(N)
l.pop(i)
O(N)
l.pop(0):O(N)
Extreme value
min(l)/max(l)
O(N)
검색
Reverse
l.reverse()
O(N)
그대로 반대
Iteration
for v in l:
O(N)
Sort
l.sort()
O(N Log N)
Multiply
k*l
O(k N)
(1,2,3) * 3 » O(N**2)

📒 Dict

d = dict() 라고 생각한 다음의 예입니다.

Operation
Big-O
Notes
색인
d(k)
O(1)
스토어
d(k) = v
O(1)
길이
len(d)
O(1)
Delete
del d(k)
O(1)
get/setdefault
d.method
O(1)
d.pop(k)
O(1)
팝 아이템
d.popitem()
O(1)
Clear
d.clear()
O(1)
s = {} or = dict() 유사
보기
d.keys()
O(1)
d.values() 동일
건설
dict(…)
O(len(…))
Iteration
for k in d:
O(N)

📒 세트

s = set() 로 고려한 다음의 Example 이다.

Operation
Notes
Big-O
길이
len(s)
O(1)
집합 요소의 수
추가
s.add(10)
O(1)
세트에 요소 추가
Containment
10 in s, 10 not in s
O(1)
세트에 특정 Element가 있는지 확인
Remove
s.remove(10)
O(1)
세트에서 특정 요소를 삭제합니다.

디스카드
s.discard(10)
O(1)
세트에서 특정 요소를 삭제합니다.

s.pop()
O(1)
세트에서 임의의 요소를 삭제합니다.

Clear
s.clear()
O(1)
집합을 공동 집합으로 만듭니다.

건설
set(…)
O(len(…))
세트 만들기
Equality
점검
s == t, s !
= t
O(len(s))
같은 집합인지 여부 연산
서브세트
점검
s <= t, s >=t
O(len(s))
O(len
서브세트인지 확인
유니온
s|t
O(len(s) + len
일본 집합
Intersection
s&t
O(len(s) + len
집합
Difference
s – t
O(len(s) + len
차 집합
심미트릭
Diff
s^t
O(len(s) + len
두 세트의 상대 여집합의 합
Iteration
for v in s:
O(N)
세트 내의 모든 요소를 ​​순회
복사
s.copy()
O(N)
세트 복사