본문 바로가기
Algorithm 💫/Problem Solving

[백준] 11723번: 집합

by 돼지고기맛있다 2021. 10. 4.
반응형

✏️ 문제 링크

https://www.acmicpc.net/problem/11723

 

11723번: 집합

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

www.acmicpc.net

 

 

✏️ 문제 설명 (더보기 클릭 👆🏻)

 

✏️ 문제 풀이

각 명령에 대해서 일일이 지우고 추가하고 하기엔 수행해야할 명령이 많다. 

이럴때에는 배열을 하나 두고 해당 배열을 true/false로 두어 true면 배열안에 있고, false라면 배열안에 없는 것으로하여 문제를 해결할 수 있다. 

 

✏️ 문제 코드

#include <bits/stdc++.h>

using namespace std;
#define MAX 21
vector<bool> num(21, false);
int main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int M; cin>>M; 
    while(M--){
        string cmd; cin>>cmd;
        int x;
        if(cmd=="add"){
        cin>>x; num[x]=true;
        }else if(cmd=="remove"){
        cin>>x; num[x]=false;
        }else if(cmd=="check"){
        cin>>x; cout<<num[x]<<"\n";
        }else if(cmd=="toggle"){
        cin>>x; num[x]=!num[x];    
        }else if(cmd=="all"){
        for(int i=1; i<MAX; i++) num[i]=true;    
        }else if(cmd=="empty"){
        for(int i=1; i<MAX; i++) num[i]=false;     
        }
    }
    return 0;
}

 

 

 

 ⭐ if feedback and question : comment please⭐  

 

 

 

 

 

반응형

댓글