[백준] - 11723 집합 (Python)

밀루·2025년 1월 13일
0

BOJ

목록 보기
46/82

문제링크

코드

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

s = []

for i in range(n):
    tmp=sys.stdin.readline().split()
    if len(tmp)==1:
        if tmp[0]=="all":
            s=list(str(i) for i in range(1,21))
        else:
            s=[]
    else:
        e, num =tmp[0],tmp[1]
        check=num in s
        if (e=="check"):
            print(1 if check else 0)
        elif (e=="add" and check==False):
            s.append(num)
        elif (e=="remove" and check):
            s.remove(num)
        elif (e=="toggle"):
            if (check):
                s.remove(num)
            else:
                s.append(num)

언어제한으로 자바스크립트로 제출할 수 없어 python(PyPy3)으로 제출했다. 시간 제한이 조금 빡셌던 거 같다. 한번 틀렸었는데, all을 할 때 all이라는 리스트를 미리 만들어두고 하니까 얕은 복사가 되어서 아래와 같은 예제를 수행했을 때 잘못된 답이 나왔다.

그래서 따로 리스트를 만들어주지 않고 list(str(i) for i in range(1,21)) 이렇게 매번 리스트를 새로 만들어주는 식으로 수정했다.

input:
4
all
remove 1
all
check 1

answer: 1
profile
이밀루의 도전

0개의 댓글