티스토리 뷰
외판원 길찾기 문제에서 비트마스크 개념이 나오는데 그 개념을 몰라서 차라리 비트마스크를 공부해보자 싶었다.
왜 길을 찾는데 비트마스크란 개념을 쓰냐면, 어떤 곳에 방문했는지 탐색할때마다 배열을 만드는건 비효율적이니까 int값만 넘기는데 자릿수마다 어떤 마을에 방문했는지 쓸 수 있는것 이다. (1번째 bit가 1이라면 1번 마을을 방문)
대신 넘기는 자료형의 자릿수보다 크게는 안된다. (32bit int 에서는 32까지 표현 가능)
- n번째 비트를 1로 만들기
arr |= (1<<index);
index가 0 일때 맨 오른쪽 비트를 가리킨다
index 번째 비트를 1로 만들고 나머지는 그대로 유지한다
- n번째 비트를 0으로 만들기
arr &= ~(1<<index);
index 번째 비트를 0으로 만든다
index 번째 비트를 0으로 만들고 나머지는 그대로 유지한다
- n번째 비트가 1인지 확인하기
if ((arr & (1<<index)) == 0) {
printf("0\n");
} else {
printf("1\n");
}
index 번째 비트만 1로 해서 &연산
자리가 같은곳에 1이 있다면 0이 아닌 수가 나옴
- n번째 비트 전환하기
arr ^= (1<<index);
index 번째 비트만 XOR 연산
- 모든 비트를 1로 만들기
arr &= 0;
arr--;
0에서 1을 빼면 모든 비트가 1이된다 (이진수 특성)
'개발 > 알고리즘' 카테고리의 다른 글
Suffix Array 개념 이해 (0) | 2021.01.01 |
---|---|
BOJ 11003 최솟값 찾기 (0) | 2020.10.04 |
golang Fast IO for algorithm (0) | 2020.05.07 |
Trie 자료구조 (0) | 2019.07.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- RVO
- 코어 남기기
- set value
- red underline
- vrpit
- boost
- ad skip
- Reciprocal n-body Collision Avoidance
- cockroach db
- Obstacle Avoidance
- 봄날에 스케치
- Visual Studio
- 면접
- shared_from_this
- chrome-extension
- 잘못된 빨간줄
- 카카오
- Quest2
- print shared_ptr class member variable
- SuffixArray
- Golang
- it's called a vrpit
- vr핏
- hole-punching
- 에러 위치 찾기
- C++
- 영상 픽셀화 하기
- 우리는 vr핏이라고 부릅니다
- 클래스 맴버 변수 출력하기
- mysql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함