문제 접근
처음에 set 으로 풀었는데 제출할 때 시간 초과 나올 거 같은 느낌이 강하게 들었다. 역시나 시간초과! 알고리즘 분류를 보니까 비트마스킹이라고 되어있었고, bool 배열 만들어서 하면 될 것 같아서 만들어서 간단하게 풀었다.
다양한 알고리즘에 익숙해지기 전까지 알고리즘 분류를 보면서 풀기로 했는데, 너무 생각없이 안 되면 그냥 보는 것 같다. 가능하면 안 보고, 보더라도 고민해보고 보자.
문제 코드
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int M, x;
bool S[21] = {false,};
string com;
cin>>M;
while(M--)
{
cin>>com;
if(com == "add")
{
cin>>x;
S[x] = true;
}
else if(com == "remove")
{
cin>>x;
S[x] = false;
}
else if(com == "check")
{
cin>>x;
cout<<(S[x])?1:0;
cout<<'\n';
}
else if(com == "toggle")
{
cin>>x;
S[x] = !S[x];
}
else if(com == "all")
{
for(int i=1; i<21; ++i)
S[i] = true;
}
else if(com == "empty")
{
for(int i=1; i<21; ++i)
S[i] = false;
}
}
}
'개발 > 알고리즘' 카테고리의 다른 글
백준 2206번 : 벽 부수고 이동하기 (0) | 2020.08.26 |
---|---|
[Solved.ac] Class3 은장 달성! (0) | 2020.08.24 |
백준 14502 : 연구소 (1) | 2020.08.23 |
백준 2606번 : 바이러스 (0) | 2020.08.21 |
백준 7662번 : 이중 우선순위 큐 (1) | 2020.08.17 |