비트마스킹(Bitmasking)은 컴퓨터 과학에서 정수의 이진 표현을 활용하여 부분 집합, 집합 연산, 상태 표현 등을 효율적으로 다루는 기법입니다. 비트마스킹을 사용하면 하나의 정수가 여러 가지 정보를 표현하는 데 활용될 수 있습니다.
비트마스킹의 주요 특징:
파이썬 코드를 통해 비트마스킹을 예시로 살펴보겠습니다. 다음은 1부터 N까지의 자연수 중에서 부분 집합을 비트마스킹으로 생성하는 코드입니다.
def generate_subsets(n):
subsets = []
for i in range(1 << n): # 모든 부분 집합 생성
subset = []
for j in range(n):
if i & (1 << j): # i의 j번째 비트가 1인 경우 해당 원소 추가
subset.append(j + 1)
subsets.append(subset)
return subsets
N = 3 # 1부터 N까지의 자연수 중
subsets = generate_subsets(N)
print("부분 집합 개수:", len(subsets))
for subset in subsets:
print(subset)
이 코드는 비트마스킹을 사용하여 1부터 N까지의 자연수 중에서 가능한 모든 부분 집합을 생성하고 출력합니다. 각 정수를 이진수로 표현하여 각 비트의 위치가 해당 원소의 포함 여부를 나타내도록 구현합니다.