Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- DFS
- 알고리즘
- RTLEngineer
- 감시
- 가속컴퓨팅
- Rtl
- 비트마스크
- verilogHDL
- verilog
- 비트마스킹
- verilog HDL
- 14889
- testbench
- 최적화
- 모듈
- 스타트와링크
- dfs연습문제
- 비트마스크알고리즘
- 15683
- 코딩테스트
- HWEngineer
- HDL
- 가속기시스템
- 모델링
- 백준
- boj
- Module
- HW
Archives
- Today
- Total
oohyoo 님의 블로그
[Python] 프로그래머스 Set 강의자료 본문
파이썬의 Set(집합)
set은 파이썬에서 제공하는 집합 자료형으로, 중복을 허용하지 않고, 순서가 없는 데이터 구조입니다.
수학의 집합 개념을 프로그래밍에서 활용할 수 있도록 제공되며, 교집합, 합집합, 차집합과 같은 집합 연산도 지원합니다.
1. Set의 특징
- 중복된 값이 허용되지 않음: python s = {1, 2, 2, 3} print(s) # {1, 2, 3}
- 동일한 값을 여러 번 저장하려고 해도 한 번만 저장됩니다.
- 순서가 없음:
-
s = {1, 2, 3} # print(s[0]) # 오류 발생
- Set은 순서가 없으므로 인덱스로 접근할 수 없습니다.
- 변경 가능(Mutable):
-
s = {1, "apple", (2, 3)}
- Set 자체는 변경 가능하지만, 내부에 저장된 요소는 변경 불가능한 값이어야 합니다. (예: 숫자, 문자열, 튜플 등은 가능하지만 리스트, 딕셔너리는 불가능)
2. Set 생성 방법
- Set은 중괄호 {} 또는 set() 함수를 사용해 생성합니다.
- 빈 Set은 set()으로만 생성 가능 ({}는 빈 딕셔너리로 인식됨).
# Set 생성
s1 = {1, 2, 3}
s2 = set([1, 2, 3]) # 리스트를 집합으로 변환
s3 = set() # 빈 Set 생성
print(s1, s2, s3) # {1, 2, 3} {1, 2, 3} set()
3. 자주 사용되는 Set 메소드
메소드설명예제
add(x) | 요소 추가 | s.add(4) |
update(iterable) | 여러 요소 추가 (반복 가능한 객체에서) | s.update([5, 6]) |
remove(x) | 특정 요소 삭제 (없으면 오류 발생) | s.remove(2) |
discard(x) | 특정 요소 삭제 (없어도 오류 없음) | s.discard(2) |
pop() | 임의의 요소 제거 후 반환 | removed = s.pop() |
clear() | 모든 요소 제거 | s.clear() |
union(other) | 두 집합의 합집합 반환 | s1.union(s2) |
intersection(other) | 두 집합의 교집합 반환 | s1.intersection(s2) |
difference(other) | 두 집합의 차집합 반환 | s1.difference(s2) |
symmetric_difference(other) | 두 집합의 대칭차집합 반환 | s1.symmetric_difference(s2) |
issubset(other) | 부분집합인지 확인 | s1.issubset(s2) |
issuperset(other) | 상위집합인지 확인 | s1.issuperset(s2) |
isdisjoint(other) | 공통 요소가 없는지 확인 | s1.isdisjoint(s2) |
4. Set 활용 예제
(1) 요소 추가와 삭제
s = {1, 2, 3}
s.add(4) # 요소 추가
print(s) # {1, 2, 3, 4}
s.update([5, 6]) # 여러 요소 추가
print(s) # {1, 2, 3, 4, 5, 6}
s.remove(3) # 요소 삭제 (없으면 오류)
print(s) # {1, 2, 4, 5, 6}
s.discard(10) # 요소 삭제 (없어도 오류 없음)
print(s) # {1, 2, 4, 5, 6}
(2) 집합 연산
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# 합집합 (Union)
print("합집합:", a | b) # {1, 2, 3, 4, 5, 6}
print("합집합 (메소드):", a.union(b)) # {1, 2, 3, 4, 5, 6}
# 교집합 (Intersection)
print("교집합:", a & b) # {3, 4}
print("교집합 (메소드):", a.intersection(b)) # {3, 4}
# 차집합 (Difference)
print("차집합:", a - b) # {1, 2}
print("차집합 (메소드):", a.difference(b)) # {1, 2}
# 대칭차집합 (Symmetric Difference)
print("대칭차집합:", a ^ b) # {1, 2, 5, 6}
print("대칭차집합 (메소드):", a.symmetric_difference(b)) # {1, 2, 5, 6}
(3) 부분집합, 상위집합, 공통 요소 확인
a = {1, 2, 3}
b = {1, 2, 3, 4, 5}
# 부분집합 확인
print(a.issubset(b)) # True
# 상위집합 확인
print(b.issuperset(a)) # True
# 공통 요소가 없는지 확인
c = {6, 7}
print(a.isdisjoint(c)) # True
5. Set을 활용한 응용
(1) 리스트에서 중복 제거
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers) # [1, 2, 3, 4, 5]
(2) 두 리스트의 중복 요소 찾기
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
common = set(list1) & set(list2) # 교집합
print("중복 요소:", common) # {3, 4}
(3) 문자열에서 고유한 문자 추출
text = "hello world"
unique_chars = set(text)
print(unique_chars) # {'e', 'd', ' ', 'o', 'h', 'w', 'l', 'r'}
6. 정리
- Set의 주요 특징:
- 중복을 허용하지 않고 순서가 없음.
- 수학적인 집합 연산(합집합, 교집합, 차집합 등)을 지원.
- 자주 사용되는 메소드:
- add, remove, union, intersection 등.
- 활용 예제:
- 리스트에서 중복 제거, 공통 요소 찾기, 고유 값 추출 등.
반응형
'코딩테스트' 카테고리의 다른 글
[Python] 프로그래머스 - 외톨이 알파벳 (1) | 2025.02.03 |
---|---|
[Python] 프로그래머스 Sort 교육자료 (0) | 2025.02.03 |
[Python] 프로그래머스 Heap 강의자료 (0) | 2025.02.03 |
[Python] 프로그래머스 - 캔디팡 (1) | 2025.02.03 |
[Python] 프로그래머스 - 아파트 단지 (1) | 2025.02.03 |