반응형
흠.. 맨처음에 봤을 때 그냥 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)]
반응형
'Algorithm > Problem Solve' 카테고리의 다른 글
[백준 18870번] 좌표 압축 (C++ / Python) (0) | 2020.12.29 |
---|---|
[백준 11724번] 연결 요소의 개수 (C++ / Python) (0) | 2020.12.29 |
[백준 11399번] ATM (0) | 2020.12.28 |
[백준 11279번] 최대 힙 (0) | 2020.12.28 |
[백준 9095번] 1,2,3 더하기 (C++ / Python) (0) | 2020.12.28 |