문제 링크
있다, 없다를 검사하는 연산이 많다.
입력받는 숫자 x의 범위가 20 이하의 자연수다.
따라서 20개를 담을 수 있는 bool 타입의 배열을 선언하여 숫자의 존재유무를 표시하면 된다.
또는 비트 연산자를 활용하면 된다.
#include <bits/stdc++.h>
using namespace std;
int m, num, x;
string command;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> m;
while(m--){
cin >> command;
if(command == "add"){
cin >> num;
x |= (1 << num); // OR 연산 num 번째 자리 수를 1로 채운다
}
else if(command=="remove"){
cin >> num;
x &= ~(1 << num); // 반전시킨 num을 AND 연산한다.
}
else if(command =="check"){
cin >> num;
if( x & (1 << num))
cout << 1 << '\n';
else
cout << 0 << '\n';
}else if(command =="toggle"){
cin >> num;
x ^= (1 << num); // num 번째 자리가 1이면 1^1 = 0, 0이라면 0^1 = 1
}
else if(command == "all"){
x = (1 << 21) -1;
}else if(command =="empty"){
x = 0;
}
}
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
나는야 포켓몬 마스터 이다솜 백준 1620번 c++ (0) | 2022.02.19 |
---|---|
최대 힙 백준 11279번 c++ (0) | 2022.02.19 |
바이러스 백준 2602번 c++ (0) | 2022.02.19 |
비밀번호 찾기 백준 17219번 c++ (0) | 2022.02.17 |
저작권 백준 2914번 c++ (0) | 2022.02.17 |