Notice
Recent Posts
Recent Comments
Link
거의 알고리즘 일기장
백준 11723번 _ 집합 본문
https://www.acmicpc.net/problem/11723
풀이방법
비트연산만 할줄안다면 풀수있다.
void add(int x)
{
S |= (1 << x);
}
void remove(int x)
{
S &= ~(1 << x);
}
void check(int x)
{
if (S & (1 << x))
cout << 1 << '\n';
else
cout << 0 << '\n';
}
void toggle(int x)
{
S ^= (1 << x);
}
void all()
{
S = ((1 << 21) - (1 << 0));
}
void empty()
{
S = 0;
}
전체코드
#include <iostream>
#include <bitset>
using namespace std;
unsigned int S;
int M;
void add(int x)
{
S |= (1 << x);
}
void remove(int x)
{
S &= ~(1 << x);
}
void check(int x)
{
if (S & (1 << x))
cout << 1 << '\n';
else
cout << 0 << '\n';
}
void toggle(int x)
{
S ^= (1 << x);
}
void all()
{
S = ((1 << 21) - (1 << 0));
}
void empty()
{
S = 0;
}
void Run(string order, int x)
{
//두번째 글자가 겹치는게 없길래 그걸로 switch문 함
switch (order[1])
{
case 'd':
add(x);
break;
case 'e':
remove(x);
break;
case 'h':
check(x);
break;
case 'o':
toggle(x);
break;
case 'l':
all();
break;
case 'm':
empty();
break;
}
}
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> M;
string order;
int x = 0;
for (int i = 0; i < M; i++)
{
cin >> order;
if (!(order == "all" || order == "empty"))
cin >> x;
Run(order, x);
}
}
후기
mcu다룰때 죽어라 한게 비트연산이었는데 그거 1년 안했다고 푸는데 가물가물해서 인터넷 보면서 풀었다.
어마어마한 빡대가리다. 오늘도 나에게 감탄했다.
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
codeforces_ 492B _ B. Vanya and Lanterns (0) | 2020.05.06 |
---|---|
백준 2098번 _ 외판원 순회 (0) | 2020.05.06 |
백준 10942번 _ 팰린드롬? (0) | 2020.05.05 |
백준 7579번 _ 앱 (0) | 2020.05.05 |
백준 1520번 _ 내리막 길 (0) | 2020.05.04 |
Comments