일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dfs
- 중복 순열
- 분할 정복
- 조합
- 재귀
- 피보나치 수
- 완전 탐색
- 우선순위 큐
- 메모리풀
- MST
- SSAFY
- DP
- 그리디
- 링크드리스트
- 크루스칼
- 시뮬레이션
- 세그먼트 트리
- 백트래킹
- 클래스
- 비트마스크
- 문자열
- 순열
- BFS
- 이분 탐색
- 스택
- 큐
- Knapsack
- 빠른 입출력
- BeautifulSoup
- lis
- Today
- Total
목록비트마스크 (3)
작심 24/7
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 0~9까지의 숫자가 모두 있는 경우는 chk = 1111111111 로 표시된다. OR 연산자를 이용하여 chk에 표시돼있는지 확인할 숫자를 확인한다. #include using namespace std; int T, N; int main() { cin >> T; for (int t = 1; t > N; int cnt = 0, chk = 0, num = N; while (++cnt) { num = N * cnt; while (num) { // 각 자릿수 하나씩 돌기 chk |= 1
11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 비트마스크를 이용해 집합을 표현해서 푸는 문제이다. S {1, 4, 5} = 11001 이렇게 S에 들어가 있는 원소는 1로, 없으면 0으로 생각하면 된다. 연산의 핵심은 1 M; for (int i = 0; i > order; if (!(order == "all" || order == "empty")) cin >> x; // all이나 empty는 x를 받을 필요 없음 if (order == "add") S |= 1
AND ( a & b ) 둘 다 1이면 1, 아니면 0 OR ( a | b ) 둘 다 0이면 0, 아니면 1 XOR ( a ^ b ) 둘이 다르면 1, 아니면 0 NOT ( ~a ) 반대 LEFT SHIFT ( a > b ) a를 b비트만큼 오른쪽으로 shift. 빈 공간은 0으로 채움 a / 2^b 와 같음 집합의 표현 집합의 i 번째 요소가 존재하면 1, 아니면 0으로 표현 가능 ex) {1, 2, 5} => 10011 연산자 우선순위 NOT ∨ 산술연산자 ∨ SHIFT ∨ 비교연산자 ∨ AND ∨ XOR ∨ OR ∨ 논리연산자