코딩테스트

[python] 백준 11723 : 집합 (실버 5)

Alpaca_data_cloud 2024. 7. 11. 10:20

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

입력 갯수가 2개 1개 이므로 리스트로 입력을 받아야 한다.

나머지는 명령어에 맞게 조건문을 완성해 주면 된다.

해당 문제를 풀면서 발생한 오류

1. 런타임 에러 

remove를 사용 하였을때에 제거 하려는 값이 존재하지 않으면 keyerror 가 발생한다. 이를 방지하기 위해서 discard 함수를 사용하여 존재하지 않는 값을 제거할 때에도 에러가 발생하지 않게 한다.

2. 시간 초과

sys로 입력을 받으면 I/O 에 소요되는 시간을 줄여 해결할 수 있다.

import sys
input = sys.stdin.readline

m = int(input())
S = set()

for _ in range(m):
    command = list(input().split())

    if command[0] == 'add':
        S.add(int(command[1]))
    elif command[0] == 'remove':
        S.discard(int(command[1]))
    elif command[0] == 'check':
        if int(command[1]) in S:
            print(1)
        else:
            print(0)
    elif command[0] == 'toggle':
        if int(command[1]) in S:
            S.remove(int(command[1]))
        else :
            S.add(int(command[1]))
    elif command[0] == 'all':
        S = {i for i in range(1,21)}
    elif command[0] == 'empty':
        S.clear()