집합을 구성하여, 각 명령어에 대한 활동을 수행하면 되는 문제다.
연산의 수가 300만번까지 갈 수 있기 때문에, all
과 같은 연산을 사용할 때 시간 초과가 발생할 수 있어{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
과 같이 무식한 방법을 사용해야 했다.
all
,empty
와 같은 키워드가 존재하기 때문에, 길이에 따라 명령어를 구분하여 숫자를 추출- 명령어가 하는 행동을 그대로 코딩
set()
을 사용하여 중복이 존재하지 않도록 관리 (어짜피 중복이 들어갈 일이 없기 때문)all
키워드에서는 연산을 수행하지 않아야 함. (문제 설명에 있는 내용과 중복)
import sys
n = int(sys.stdin.readline())
result = set()
for i in range(n):
command_line = sys.stdin.readline().split()
command = command_line[0]
if len(command_line) > 1:
num = int(command_line[1])
if command == "add":
if num not in result:
result.add(num)
if command == "remove":
if num in result:
result.discard(num)
if command == "check":
if num in result:
print(1)
else:
print(0)
if command == "toggle":
if num in result:
result.discard(num)
else:
result.add(num)
if command == "all":
result = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
if command == "empty":
result = set()
연구 작업으로 알고리즘 공부가 밀렸다. 다시 시작해보자 :)