https://www.acmicpc.net/problem/11723
11723번: 집합
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
www.acmicpc.net
문제 접근
비트마스킹
비트 마스킹 C++
연산자의 종류 & AND연산자. 두 값이 모두 1이라면 1의 출력값을 가진다. | OR연산자. 두 값중 하나라도 1이라면 1의 출력값을 가진다. ~ NOT연산자. 0은 1로, 1은 0으로 바꾼다. ^ XOR연산자. 두 값이 서
portable-paper.tistory.com
코드
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
unsigned int S = 0;
int M, x;
cin>>M;
string str = "";
for(int i=0; i<M; i++)
{
cin>>str;
if(str=="add")
{
cin>>x;
S |= (1<<x);
}
else if(str=="remove")
{
cin>>x;
S &= ~(1<<x);
}
else if(str== "check")
{
cin>>x;
if(S&(1<<x))
cout<<1<<'\n';
else
cout<<0<<'\n';
}
else if(str=="toggle")
{
cin>>x;
S ^= (1<<x);
}
else if(str=="all")
{
S |= (1<<21)-1;
}
else if(str=="empty")
{
S = 0;
}
}
return 0;
}
2024 | 700 |
'백준 > 문제풀이_C++' 카테고리의 다른 글
10816 숫자 카드2 C++ (0) | 2023.02.10 |
---|---|
1547 공 C++ (0) | 2023.01.26 |
2577 숫자의 개수 C++ (0) | 2022.12.17 |
2908 상수 C++ (0) | 2022.12.17 |
2920 음계 C++ (0) | 2022.12.17 |
댓글