비트마스킹이란,
정수의 이진수(0/1) 표현을 활용해
집합, 방문 여부, 상태 등을 압축적으로 표현하고
빠르게 연산하는 테크닉
특히 DP(동적계획법), 집합 처리, 외판원 문제(TSP), 그래프 탐색 등
“여러 가지 조합” 을 처리할 때 매우 유용
연산 | 파이썬 표현 | 의미/설명 | |
---|---|---|---|
& | a & b |
비트 AND (둘 다 1이면 1) | |
** | ** | a | b |
비트 OR (둘 중 1이면 1) |
^ | a ^ b |
비트 XOR (다르면 1) | |
~ | ~a |
비트 NOT (반전) | |
« | a << k |
a를 k비트만큼 왼쪽으로 shift | |
» | a >> k |
a를 k비트만큼 오른쪽으로 shift |
```python if visited & (1 « k): # k번 원소/도시가 포함(방문)됨