반응형
출처: https://www.acmicpc.net/problem/11723
Approach
집합 S에서 사용되는 숫자가 1 ≤ X ≤ 20이므로, 비트를 이용해서 표현
ex) S = 일 때,
state = 10101000000000000001
ex) S = 일 때,
state = 11110000000000000000
명령어의 개수가 M (1 ≤ M ≤ 3,000,000)이므로
빠른 입출력 처리를 위해서 아래 구문들 이용.
#define endl '\n'
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
#define endl '\n'
// 인덱스를 1~20으로 표현
bool state[21];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int M, X;
cin >> M;
for (int i = 0; i < M; i++){
string cmd;
cin >> cmd;
if (cmd == "all" || cmd == "empty"){
if (cmd == "all"){
for (int i = 1; i <= 20; i++)
state[i] = true;
}
else if (cmd == "empty"){
memset(state, false, sizeof(state));
}
continue;
}
// "all" or "empty" 외의 명령어
cin >> X;
if (cmd == "add" && !state[X])
state[X] = true;
else if (cmd == "remove" && state[X])
state[X] = false;
else if (cmd == "toggle"){
if (state[X] == true) state[X] = false;
else state[X] = true;
}
else if (cmd == "check"){
if (state[X]) cout << 1 << endl;
else cout << 0 << endl;
}
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1654 랜선 자르기 (0) | 2021.03.06 |
---|---|
[BOJ] 백준 11727 2×n 타일링 2 (0) | 2021.03.01 |
[BOJ] 백준 11811 데스스타 (0) | 2021.02.28 |
[BOJ] 백준 1062 가르침 (0) | 2021.02.28 |
[BOJ] 백준 12813 이진수 연산 (0) | 2021.02.28 |
댓글