비트마스크 3

여러가지 비트 연산

여러가지 비트 연산 최하위 비트 구하기 : 2의 보수의 특징을 활용함. [연산 방법] 1 num & (-num) cs [예제 코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include int main() { //0000 1010 int num = 10; //0000 0010 int result = num & (-num); //output printf("%d\n", result); return (0); } cs 다음 비트가 처음으로 0이 나오는 자리 구하기 [연산 방법] 1 ((num ^ (num + 1)) + 1) / 4 cs *중간에 0이 없을 경우 최상위 비트를 반환함. [예제 코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include int main()..

[C++] 백준 23057 : 도전 숫자왕

백준 23057 : 도전 숫자왕 문제 링크 https://www.acmicpc.net/problem/23057 23057번: 도전 숫자왕 모든 카드에 적힌 수의 합을 $M$이라고 할 때, 1 이상 $M$ 이하의 자연수 중 만들 수 없는 수의 개수를 출력한다. www.acmicpc.net 문제 내용 오늘은 즐거운 축제날이다. 백남이는 축제에서 무엇을 할까 돌아다니던 중 도전 숫자왕이라는 행사를 발견했고 100만 원이라는 상금에 홀려 바로 참가하였다. 도전 숫자왕은 N개의 숫자 카드를 조합하여 다양한 수를 만드는 게임이다. 이번 라운드에서는 카드의 적힌 수의 합으로 만들 수 없는 수의 개수를 외치면 이긴다. 백남이가 1등을 하여 축제를 즐길 수 있도록 도와주자. 첫 번째 줄에는 카드의 개수 N(1≤N≤20)..

백준 Baekjoon 2021.09.19

비트마스크

비트마스크 비트마스크란? 내부적으로 이진수를 사용하는 컴퓨터는 이진법 관련 연산을 빨리 진행할 수 있다. 이런 특성을 이용해 정수의 이진수 표현을 자료 구조로 쓰는 기법을 비트마스크(bitmask)라고 한다. 보통은 집합에서 주로 쓰인다. 비트마스크의 장점 빠른 속도 비트마스크 연산은 O(1)에 구현되는 것이 많기 때문에 적절히 사용한다면 다른 자료구조들에 비해 빨리 동작한다. 비트마스크를 사용한다는 것은 애초에 원소의 개수가 많지 않다는 것을 의미하긴 하지만 같은 연산을 여러번 수행해야 할 경우에는 이런 사소한 차이가 큰 속도 향상을 가져올 수 있다. * int(정수형) = 4 Bytes = 32 bits 간결한 코드 다양한 집합 연산들을 배열이나 반복문을 쓸 필요 없이 한 줄에 쓸 수 있기 때문에 비..