본문 바로가기

백준 문제 풀이 및 피드백

2023.01.20 집합 백준[파이썬]

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

 

11723번: 집합

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

www.acmicpc.net

import sys
input = sys.stdin.readline

n = int(input().strip())
s = set()

for _ in range(n):
    command = input().split()
    if len(command) == 1:
        if command[0] == 'all':
            s = set(range(1,21,1))
        else:
            s = set()
    else:
        (command[0] == 'add' and s.add(int(command[1]))) or \
            (command[0] == 'remove' and int(command[1]) in s and s.remove(int(command[1])))
        if (command[0] == 'check'):
            if int(command[1]) in s:
                print(1)
            else:
                print(0)
        if  (command[0] == 'toggle'):
            if (int(command[1]) in s):
                s.remove(int(command[1]))
            else:
                s.add(int(command[1]))

그냥 and 랑 or 을 사용해서 풀라고 했는데 toggle 랑 check 가 계속 오류가 나서 따로 분리 해줬다. 

나머지는 그냥 무지성 하는건데 시간이 3744 나와서 엄청 느린 줄 알았지만 나머지 파이썬도 다 비슷해서 파이썬의 언어의 한계인거 같다.