[BOJ11723] 집합

문제 설명

문제 링크 1~20까지의 원소가 들어갈 수 있는 집합에 명령어를 통해 원소를 추가하거나 삭제, 확인 등을 하는 문제이다.

코드 리뷰

기본적인 비트 마스크 연산을 공부한 후 복습해볼 수 있는 문제이다.

자세한 설명에 대해서는 생략하고, 비트 마스크에 대한 포스팅 링크를 첨부한다.

비트 마스크 포스팅

#include <iostream>
#include <string>
#define endl "\n";
using namespace std;

int M;
int set = 0;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> M;
    while(M--){
        string s;
        int n;
        cin >> s;
        if(s=="add"){
            cin >> n;
            set |= (1<<n);
        }else if(s=="check"){
            cin >> n;
            if(set & (1<<n)){
                cout << "1"<< endl;
            }else {
                cout << "0" << endl;
            }
        }else if(s=="remove"){
            cin >> n;
            set &= ~(1<<n);
        }else if(s=="toggle"){
            cin >> n;
            set ^= (1<<n);
        }else if(s=="empty"){
            set = 0;
        }else if(s=="all"){
            set = (1<<21)-1;
        }
    }
    return 0;
}

댓글남기기