[백준 11723] 집합

코뉴·2021년 8월 9일
0

백준🍳

목록 보기
44/149

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

🥚문제


🥚입력/출력


🍳코드

from sys import stdin
input = stdin.readline

s = set()

def check(num):
    if num in s:
        return 1
    else:
        return 0

for _ in range(int(input())):
    cmd = list(input().strip().split())

    if len(cmd) ==2:
        cmd[1] = int(cmd[1])

        # S에 x가 있는지 체크
        # x가 이미 있는 경우에는 add 연산 무시
        if check(cmd[1]):
            # toggle -> x가 있으면 x를 제거한다
            if cmd[0] == "remove" or cmd[0] == "toggle":
                s.remove(cmd[1])
            elif cmd[0] == "check":
                print(1)
        # x가 없는 경우에는 remove 연산 무시
        else:
            # toggle -> x가 없으면 x를 추가한다
            if cmd[0] == "add" or cmd[0] == "toggle":
                s.add(cmd[1])
            elif cmd[0] == "check":
                print(0)

    else:
        if cmd[0] == "all":
            s = set([x for x in range(1, 21)])
        elif cmd[0] == "empty":
            s = set()

🧂아이디어

  • 입력값이 3,000,000까지 주어지기에 효율적으로 코드를 작성하는 것이 중요했던 문제
  • 과거 제출에서는 정직하게 하나하나 명령어를 수행해서 시간초과가 떴는데 이번에는 효율적으로 조건문을 구성해서 패스할 수 있었다
  • 비트마스킹 기법으로도 풀어 보면 좋을 것 같다
profile
코뉴의 도딩기록

0개의 댓글