1. 집합 자료형의 특징
- 중복을 허용하지 않는다.
- 순서가 없다(Unordered)
- 주로 중복을 제거하기 위한 필터 혹은 어떤 값이 포함되어 있는지 여부를 확인하는 용도로 쓰인다.
2. 집합 자료형 초기화
- 비어 있는 집합
S = set()
- 원소가 있는 집합
S = {1, 2, 3, 4}
- 리스트를 이용한 초기화
S = set([1, 2, 3])
- 문자열을 이용한 초기화
S = set("Hello") #{'e', 'H', 'l', 'o'}
3. 교집합, 합집합, 차집합
- 교집합
s1 & s2 or s1.intersection(s2)
- 합집합
s1 | s2 or s1.union(s2)
- 차집합
s1 - s2 or s1.difference(s2)
4. 집합 자료형 관련 함수
- 값 1개 추가하기(add)
s.add(x) # 이미 만들어진 집합 s에 x를 추가
- 값 여러 개 추가하기(update)
s.update([x1, x2, x3]) # 이미 만들어진 집합 s에 여러 개의 값을 한 번에 추가
- 특정 값 제거하기(remove)
s.remove(x) # 집합 s에서 값 x를 제거한다.
5. 집합 메소드 시간 복잡도
연산 | 설명 | 예제 | 복잡도 | 비고 |
length | 집합 원소 개수 | len(s) | O(1) | |
add | 집합 원소 추가 | s.add(10) | O(1) | |
x in s | 집합에 원소 존재 여부 확인 | 10 in s, 10 not in s | O(1) | List/Tuple은 O(N) |
remove | 집합의 특정 원소 제거 | s.remove(10) | O(1) | List/Tuple은 O(N) |
discard | 집합의 특정 원소 제거 | s.discard(10) | O(1) | |
pop | 집합에서 원소 하나 제거 | s.pop() | O(1) | |
clear | 집합을 공집합으로 만들기 | s.clear() | O(1) | s = set()과 동일 |
construction | 집합 생성 | set(...) | O(len(...) | |
equal | 동일한 집합인지 확인 | s == t, s != t | O(len(s)) | |
subset | subset 여부 확인 | s <= t, s >= t | O(len(s))O(len(t)) | |
union | 합집합 | s | t | O(len(s) + len(t)) | |
intersection | 교집합 | s & t | O(len(s) + len(t)) | |
difference | 차집합 | s - t | O(len(s) + len(t)) | |
copy | 집합 복사 | s.copy() | O(N) | |
symmetric diff |
두 집합의 상대 여집합의 합 | s ^ t | O(len(s) + len(t)) | |
iteration | 집합의 모든 원소 순회 | for v in s: | O(N) |
파이썬 기본 연산자들의 시간 복잡도(Big-O) 정리
파이썬으로 알고리즘 문제를 풀다보면 파이썬 언어 자체에서 지원하는 내장 메소드들을 사용하게 된다. 알...
blog.naver.com
[Python / 파이썬] 집합(set) 자료형 정리
1. 집합 자료형의 특징 중복을 허용하지 않는다 순서가 없다(Unordered) 따라서 주로 중복을 제거하기 위한 필터나 어떤 값이 포함되어 있는지만을 확인하기 위한 용도로 쓰임 2. 집합 자료형 초기
mjmjmj98.tistory.com
'CS > 알고리즘' 카테고리의 다른 글
[이코테] 다이나믹 프로그래밍 - 퇴사 (0) | 2023.04.03 |
---|---|
[백준] 이진 탐색 - 1477 휴게소 세우기 (0) | 2023.03.23 |
[이코테] DFS&BFS - 블록 이동하기 (0) | 2023.03.15 |
[이코테] DFS&BFS - 경쟁적 전염 (0) | 2023.03.04 |
DFS & BFS (0) | 2023.03.03 |