Algorithm/Problem Solve

[백준 11723번] 집합 (C++/ Python)

아네스 2020. 12. 29. 16:54
반응형

흠.. 맨처음에 봤을 때 그냥 map에 넣고빼고 하는건가..? 해서 C++로는 map으로 풀고 나서 알고리즘 분류가 비트마스킹이길레 python은 비트 배열로만 했다.

C++ 풀이

#include <bits/stdc++.h>

using namespace std;
map<int,int> m;

int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int M;
    cin >> M;
    for(int i = 0 ; i< M; i++)
    {
        string cmd;
        int tmp;
        cin >> cmd;
        if( cmd == "all" || cmd =="empty"){
            if(cmd == "all"){
                for(int i = 1; i<=20; i++)
                {
                    m[i] = 0;
                }
            }
            else{
                m.clear();
            }
        }else{
            cin >> tmp;
            if(cmd == "add"){
                if(m.find(tmp) == m.end())
                {
                    m[tmp] = 0;
                }
            }
            else if(cmd == "check")
            {
                if(m.find(tmp) != m.end()){
                    cout << "1\n";
                }else cout << "0\n";
            }
            else if(cmd == "remove")
            {
                if(m.find(tmp) != m.end())
                {
                    m.erase(tmp);
                }
            }
            else if(cmd == "toggle")
            {
                if(m.find(tmp) != m.end())
                {
                    m.erase(tmp);
                }else{
                    m[tmp] = 0;
                }
            }
        }
    }
}

 

파이썬 풀이

import sys
input = sys.stdin.readline
M = int(input().rstrip())
check = [False for _ in range(21)]

for _ in range(M):
    line = list(input().rstrip().split())
    cmd = line[0]
    if len(line) == 2:
        value = int(line[1])
    if cmd == 'add':
        if not check[value]:
            check[value] = True
    elif cmd == 'check':
        if check[value]:
            print(1)
        else:
            print(0)
    elif cmd == 'remove':
        if check[value]:
            check[value] = False
    elif cmd == 'toggle':
        if check[value]:
            check[value] = False
        else:
            check[value] = True
    elif cmd == 'all':
        check = [True for _ in range(21)]
    elif cmd == 'empty':
        check = [False for _ in range(21)]
    
반응형