열렬히.뛰기

11723 : 집합

알고리즘: 실전 > 기타 백준 문제 > 11723 : 집합

정말 풀기 힘들었던 문제

백준 사이트 기준으로 Python 3를 사용해야 풀린다.

python
"""집합"""
import sys

S = set()
for _ in range(int(sys.stdin.readline())):
    order = sys.stdin.readline().split()
    if len(order) == 1:
        ord1 = order[0]
    else:
        ord1, ord2 = order

        
    if ord1 == "add":
        S.add(int(ord2))

    elif ord1 == "remove":
        S.discard(int(ord2))

    elif ord1 == "check":
        if int(ord2) in S:
            print(1)
        else:
            print(0)

    elif ord1 == "toggle":
        if int(ord2) in S:
            S.discard(int(ord2))
        else:
            S.add(int(ord2))

    elif ord1 == "all":
        S = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
        11, 12, 13, 14, 15, 16, 17, 18, 19, 20}

    else:
        S.clear()
  • sys를 써서 stdin.readline()으로 입력받기
  • 최대한 if, else문을 적게 써야 한다.
  • discard() 를 써야 한다.
  • all 나올 때 그냥 숫자를 일일히 적어야 한다.
    • 메모리를 줄이기 위한 극단적인 방법

왜 이렇게 메모리를 걱정해야 하는가?

알고보니….

비트마스킹