비트 마스킹 기본연산
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// 2진수 형태로 출력
void show(int* a) {
for (int i = 32; i > 0; i--) {
cout << ((*a & (1 << i - 1)) ? 1 : 0);
}
}
// 모든 원소를 삭제
void init(int* a) {
*a = 0;
}
// 모든 원소를 포함
void full(int* a) {
*a = -1;
}
// 특정 원소를 삭제
void drop(int* a, int i) {
*a &= ~(1 << i);
}
// 특정 원소를 포함
void set(int* a, int i) {
*a |= (1 << i);
}
// 특정 원소 토글
void toggle(int* a, int i) {
*a ^= (1 << i);
}
// 특정 원소의 포함 여부를 확인
bool isSet(int* a, int i) {
return *a & (1 << i);
}
// 마지막 원소 확인
int getLast(int* a) {
return (*a & -*a);
}
// 마지막 원소 삭제
void dropLast(int* a) {
*a &= (*a - 1);
}
|
cs |
https://www.acmicpc.net/problem/11723
기본 연습문제
https://www.acmicpc.net/problem/2098
[비트 마스킹] 대표예제
https://www.acmicpc.net/problem/1102
https://www.acmicpc.net/problem/1562
https://www.acmicpc.net/problem/1194
반응형
'자료구조 + 알고리즘' 카테고리의 다른 글
스택 (Stack) (0) | 2021.09.13 |
---|---|
리스트 (List) (0) | 2021.09.13 |
인덱스 트리 (0) | 2021.09.13 |
세그먼트 트리 (0) | 2021.09.13 |
슬라이딩 윈도우 (0) | 2021.09.13 |