본문 바로가기

Baekjoon

[Baekjoon]백준 11723 집합(실버 5) - Python

문제설명
예제

문제를 살펴보면 간단하다 주어진 명령에 따라 그에 맞게 연산하는 코드를 작성하면 된다

주의할 점은 하나의 명령어(all, empty)인 경우도 있고 두 개의 명령어를 입력하는 경우도 있기 때문에

각각의 상황에 맞게 적절하게 처리되어야한다

그래서 일단 둘을 합쳐서 입력받고(input().strip().split()) 만약 입력받은 명령어의 길이가 1이라면

all 또는 empty라는 뜻이므로 그에 맞게 집합을 세팅해준다

만약 그게 아니라면 두번째 명령어(숫자)를 int형으로 변환하여 하나의 변수에 저장해주고

add, remove, check, toggle 각 명령어에 맞게 실행하도록 하면된다

여기서 주의할 점은 remove를 사용하게 되면 없는 숫자를 제거하려고할 때 오류가 발생하기 때문에

discard()를 사용해야 오류없이 숫자를 제거할 수 있다

import sys
input = sys.stdin.readline

A = set()
num = int(input())
for _ in range(num):
    cmd = input().strip().split()
    if len(cmd) == 1: # all 또는 empty
        if cmd[0] == 'all':
            A = set(range(1, 21))
        else:
            A = set()
    else:
        x = int(cmd[1])
        if cmd[0] == 'add':
            A.add(x)
        elif cmd[0] == 'remove':
            A.discard(x)
        elif cmd[0] == 'check':
            if x in A:
                print(1)
            else:
                print(0)
        elif cmd[0] == 'toggle':
            if x in A:
                A.discard(x)
            else:
                A.add(x)

cmd[0]을 해야하는데 cmd == 'all'로 적어서 꽤 오랜시간 수정을 반복하다가 겨우 찾아서 정답을 제출하였다

이런 문제 풀때는 항상 조심합시다...!!