반응형

비트 마스킹 c++ 2

백준 11723 집합 c++ [컴공과고씨]

https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 이 문제는 비트 연산 이용하는 문제로 나는 처음에 벡터를 이용해 풀어서 시간초과가 났다. 비트연산을 모르는 사람이 있다면 https://hagisilecoding.tistory.com/54 여기서 공부를 하고 오면 쉽게 이해할 수 있다. 단계별 문제 풀이 1. |= (1

알고리즘/백준 2022.04.03

C++ 비트 마스킹 (비트 연산) [컴공과고씨]

데이터 타입에는 각 메모리 사용 크기가 있다. 만약 int 라고 하면 4byte 즉, 32 bit의 크기를 가진다. 표현하면 0000 0000 0000 0000 0000 0000 0000 0000이 될 것이다. (0과 1을 씀) 만약 아이템이 있고 없고를 구현해야할 때 bool 변수 32개를 쓰는 대신에 하나의 비트를 다룰 수있으면 우리는 int하나로 32개의 아이템이 있고 없고를 표현할 수 있다. 또한 비트 연산은 연산 속도가 빠르다는 장점을 가지고 있다. 만약 2번째 아이템이 있다면 0100 이런식으로 0을 1로 바꾸어 표현하는 것이다. & , | , ~, ^, >>, & AND 연산자로 하나라도 0 이면 0으로 둘다 1이면 1의 출력값을 가진다. -> | OR 연산자로 하나라도 1이면 1이고 둘다 ..

언어/C++ 2022.04.03
반응형