[python]11723話


👉 11723セット



[正解コード]
import sys

s = []
m = int(sys.stdin.readline())
for i in range(m):
    command = sys.stdin.readline().rstrip()
    if command[0] == 'a': # add
        if command[1] == 'd':
            value = int(command[4:])
            if value not in s:
                s.append(value)
        if command[1] == 'l': # all
            s = [i for i in range(1, 21)]
    if command[0] == 'r': # remove
        value = int(command[7:])
        if value in s: 
            s.remove(value)
    if command[0] == 'c': #check
        value  = int(command[6:])
        if value in s:
            print(1)
        else:
            print(0)
    if command[0] == 't': #toggle
        value = int(command[7:])
        if value in s:
            s.remove(value)
        else:
            s.append(value)
    if command[0] == 'e': #empty
        s = []
[回答]
  • 集合要素xの条件は1<=x<=20であるため,時間的複雑さを考慮せずpythonlist内蔵関数で実現する.
  • 検索すると,集合への要素の追加,削除などの表現でビットマスクが非常に速いことが分かった.
    ビットマスク
    ビットマスクリファレンス2