1 분 소요

11723번 : 집합

11723: 집합

방법 1 (틀림)

  • 틀린이유 1

    all_s = {i for i in range(1, 21)}

    • cmd 는 str 으로 입력받기 때문에 all_s 는 int형이 아닌 str 형을 저장하고 있는 집합이어야 함
  • 틀린이유 2

    s.remove(cmd[1])

    • 비어있는 s를 remove 하는 경우 value error 발생
import sys
input = sys.stdin.readline

if __name__ == '__main__':
    n = int(input())
    s = set()
    all_s = {i for i in range(1, 21)}
    for _ in range(n):
        cmd = list(input().split())
        if cmd[0] == 'add':
            s.add(cmd[1])
        elif cmd[0] == 'remove':
            s.remove(cmd[1])
        elif cmd[0] == 'check':
            if cmd[1] in s:
                print(1)
            else:
                print(0)
        elif cmd[0] == 'toggle':
            if cmd[1] in s:
                s.remove(cmd[1])
            else:
                s.add(cmd[1])
        elif cmd[0] == 'all':
            s = all_s
        elif cmd[0] == 'empty':
            s.clear()

방법 2 (옳은 풀이)

  • all_s 는 1 ~ 20 (str) 을 저장하고 있는 집합
  • 비어있는 s에 remove 시도시, pass
import sys
input = sys.stdin.readline

if __name__ == '__main__':
    n = int(input())
    s = set()
    all_s = {str(i) for i in range(1, 21)}
    for _ in range(n):
        cmd = list(input().split())
        if cmd[0] == 'add':
            s.add(cmd[1])
        elif cmd[0] == 'remove':
            try: s.remove(cmd[1])
            except: pass
        elif cmd[0] == 'check':
            if cmd[1] in s:
                print(1)
            else:
                print(0)
        elif cmd[0] == 'toggle':
            if cmd[1] in s:
                s.remove(cmd[1])
            else:
                s.add(cmd[1])
        elif cmd[0] == 'all':
            s = all_s
        elif cmd[0] == 'empty':
            s.clear()