stl에서 제공하는 집합을 사용해도 되지만 비트 마스킹으로 분류가 되어 있길래 비트마스킹을 사용해봤다.
특정 비트를 0으로 바꾸기 위해선 & 연산자 사용:
1<<X 인 비트를 ~를 사용하여 뒤집은 후에 &를 시행한다.
#include <iostream>
using namespace std;
int num;
int m;
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cin >> m;
string cmd;
int x;
while (m--)
{
cin >> cmd;
if (cmd == "add")
{
cin >> x;
num = num | 1 << x;
}
else if (cmd == "remove")
{
cin >> x;
num = num & ~(1 << x);
}
else if (cmd == "check")
{
cin >> x;
if (num & 1 << x)
{
cout << 1 << "\n";
}
else
{
cout << 0 << "\n";
}
}
else if (cmd == "toggle")
{
cin >> x;
num ^= (1 << x);
}
else if (cmd == "all")
{
num = (1 << 21) - 1;
}
else
{
num = 0;
}
}
return 0;
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 15591] Moo Tube (0) | 2021.02.17 |
---|---|
[백준 1339] 단어 수학 (0) | 2021.02.09 |
[백준 10971] 외판원 순회2 (0) | 2021.02.05 |
[백준 18870] 좌표 압축 (0) | 2021.02.02 |
[백준 14170] Counting Haybales (0) | 2021.02.01 |
댓글