문제 해결 key_point
문제 해결 아이디어
- int 형 bitmask 생성 (int bitmask = 0)
- 이전에 학습했던 bitmask 활용 사용
- 추가
- 삭제
- 확인
- 반전
- 이러한 4가지 활용을 조합하여 문제 해결
소스 코드
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int test_case;
cin >> test_case;
int bitmask = 0;
for (int i = 0; i < test_case; i++) {
string s;
int x;
cin >> s;
if (s == "add") {
cin >> x;
bitmask |= (1 << (x - 1));
} else if (s == "remove") {
cin >> x;
bitmask &= ~(1 << (x - 1));
} else if (s == "check") {
cin >> x;
cout << ((bitmask & (1 << (x - 1))) != 0) << "\\n";
} else if (s == "toggle") {
cin >> x;
bitmask ^= (1 << (x - 1));
} else if (s == "all") {
bitmask = (1 << 20) - 1;
} else if (s == "empty") {
bitmask = 0;
}
}
return 0;
}