반응형
부분집합 구하는 방법
부분집합의 수
- 각 원소가 n개 일 때, 공집합을 포함한 부분집합의 수는 2^n개
- ex) [1,2,3,4,5] —> 2^5 = 32개
각 원소가 부분 집합에 포함되었는지 확인하는 방법
arr = [1,2,3,4,5]
for i in range(2) :
arr[0] = i
for j in range(2) :
arr[1] = j
for k in range(2) :
arr[2] = k
for l in range(2) :
arr[3] = l
for n in range(2) :
arr[4] = n
print(arr)
반응형
부분집합을 for문을 이용하는 방법(비트 연산자 활용)
비트연산자
- & : 비트 단위로 and 연산
- | : 비트 단위로 or 연산
- << : 피연산자의 비트 열을 왼쪽으로 이동
- >>피트연산자의 비트 열을 오른쪽으로 이동
arr = [1,2,3,4,5,6]
n = len(arr)
for i in range(1<<n): #부분 집합의 개수
result = []
for j in range(n) : # 원하는 수만큼 비트를 비교
if i & (1<<j): # i 의 j번째 비트가 1인지 아닌지 검사
result.append(arr[j])
print(result)
반응형
'언어별 개념 정리 > Python' 카테고리의 다른 글
[파이썬] 정렬 알고리즘 - 선택 정렬 (0) | 2023.02.12 |
---|---|
[파이썬] 자료찾기 알고리즘 - 검색 방법(순차 검색, 이진 검색) (0) | 2023.02.12 |
[파이썬] 정렬 알고리즘 - 버블 정렬 & 카운팅 정렬 (0) | 2023.02.12 |
[파이썬] 스택(Stack) 알고리즘 정리 - 계산기 구현하기 (0) | 2023.02.08 |
[파이썬] 문자열(String) 알고리즘 정리 - 보이어 무어(Boyer-moore) 알고리즘 (0) | 2023.02.07 |
댓글