본문 바로가기

백준문제풀이

[백준 문제풀이] 11723번 : 집합

https://www.acmicpc.net/problem/11723

 

11723번: 집합

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

www.acmicpc.net

 

💡 처음에 그냥 if-else문으로 푸니까 시간초과가 나서 구글링 해보니까 파라미터가 1개인 것과 2개인 것을 구분해서 풀어야 했던 문제. 난 왜 생각이 안나는걸까..아직도 한참 멀었군

+사실 그렇게 바꾸고도 계속 시간초과 나서 pypy로도 바꿔보고 생난리였음

그..원래 pypy가 메모리가 더 적나요..??

찾아봐야겠네..

 

✔ 소스코드

import sys
M=int(sys.stdin.readline())
S=set()

for i in range(M):
    word=sys.stdin.readline().strip().split()
    if len(word)==1:
        if word[0]=="all":
            S=set([i for i in range(1,21)])
        else:
            S=set()
    else:
        x=int(word[1])
        if word[0]=="add":
            S.add(x)
        elif word[0]=="remove":
            S.discard(x)
        elif word[0]=="check":
            if x in S:
                print(1)
            else:
                print(0)
        elif word[0]=="toggle":
            if x in S:
                S.discard(x)
            else:
                S.add(int(word[1]))