배열의 부분 집합 구하기


배열의 부분 집합 구하기

부분 집합 비트 연산자를 이용해 배열의 모든 부분 집합을 구하는 방법 (python 문법 이용) 다음의 코드를 이용해 배열의 부분 집합을 구할 수 있다. lst =[4,5,6] n = len(lst) for i in range (1<<n): ##point 1 for j in range (n): ## point 2 if i & (1 << j): ## point 3 print(lst[j],end = " ") print() ##point4 point 3의 i &(1<<j) 가 코드의 핵심으로 이 연산의 기능을 실제 실행 순서와 다르더라도 이해를 돕기 위해 표로 나타내면 다음과 같다. (&는 각 비트를 and 연산하고, 1<<j는 j만큼 1의 비트를 좌측으로 이동 시킨다. 따라서 1<<n 또한 2^n을 나타낸다.) i의 비트를 배열 {4,5,6}의 각 위치의 원소 유무로 보면 0은 해당 원소가 없는 경우 1은 해당 원소가 있는 경우가 되어 i의 비트 배열 자체가 배열{4,5,6}의 부분 집...



원문링크 : 배열의 부분 집합 구하기