백준 11723 - 집합 (파이썬)

Updated:

비트마스크를 이용해 풀었습니다.
비트 연산에 관해서는 한번 검색해보시는걸 추천드립니다.

import sys

n = int(sys.stdin.readline())

s = 0b0
all_one = 0b111111111111111111111
all_zero = 0b000000000000000000000

for i in range(n):
    order = sys.stdin.readline().rstrip().split(" ")
    
    if order[0] == "add":
        s = s | (1 << int(order[-1]))
    elif order[0] == "remove":
        s = s & ~(1 << int(order[-1]))
    elif order[0] == "check":
        if s & (1 << int(order[-1])):
            print(1)
        else:
            print(0)
    elif order[0] == "toggle":
        s = s ^ (1 << int(order[-1]))
    elif order[0] == "all":
        s = s | all_one
    else:
        s = s & all_zero

Categories:

Updated: