문제
풀이
비트마스킹
or 집합
으로 구현해야하는 문제이다.
- 이 문제는 python으로 풀거면 무조건 python으로 제출해야 한다 아니면 pypy는 실패가 뜨기 때문.
코드
import sys
input = sys.stdin.readline
def add(s, order):
s.add(int(order[1]))
def remove(s, order):
s.discard(int(order[1]))
def check(s, order):
if int(order[1]) in s:
print(1)
else:
print(0)
def toggle(s, order):
if int(order[1]) in s:
s.remove(int(order[1]))
else:
s.add(int(order[1]))
def all(s):
return {i for i in range(1, 21)}
def empty(s):
return set()
def solve(orders):
s = set()
for _ in range(m):
order = list(map(str, input().split()))
if order[0] == 'add':
add(s, order)
elif order[0] == 'remove':
remove(s, order)
elif order[0] == 'check':
check(s, order)
elif order[0] == 'toggle':
toggle(s, order)
elif order[0] == 'all':
s = all(s)
elif order[0] == "empty":
s = empty(s)
if __name__ == '__main__':
m = int(input())
solve(m)
결과
출처 & 깃허브
BOJ 11723
GITHUB