-
[백준 11723] 집합백준/비트마스크 2023. 7. 3. 14:13
그냥 bitset 으로 풀어도되는데 비트연산 연습겸 비트연산으로 품!
check 문은
1<<x 랑 &연산으로 해당 자리가 1 인지 0인지 체크
1<<x가 다른자리는 모두 0이고 x자리만 1이므로 결과는 0아니면 0아님.
그래서 이걸 다시 >> x로 옮겨주면 결과는 0아님 1이 됨
그래서 그냥 그걸 출력해주면 됨. if문 필요가 없음!
#include <iostream> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int data = 0; string str; int M, x; cin >> M; for (int i = 0; i < M; i++) { cin >> str; if (str == "all") { data = (1 << 21) - 1; } else if (str == "empty") data = 0; else { cin >> x; if (str == "add") { data |= 1 << x; } else if (str == "remove") { data &= ~(1 << x); } else if (str == "check") { cout << ((data & (1 << x)) >> x) << "\n"; } else if (str == "toggle") { data ^= 1 << x; } } } return 0; }
'백준 > 비트마스크' 카테고리의 다른 글
[백준 1244] 스위치 켜고 끄기 (0) 2023.11.11 [백준 20501] Facebook (0) 2023.07.07 [백준 27375] 금공강 사수 (0) 2023.07.04 [백준 20364] 부동산 다툼 (0) 2023.06.30