본문 바로가기
백준

[백준] 11723번 파이썬 (집합)

by 헤이즐넛 좋아하는 개발자 2024. 3. 22.

1. 문제와 예제

(문제 링크: https://www.acmicpc.net/problem/11723)

 

11723번: 집합

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

www.acmicpc.net

문제
예제


2. 전체 코드

import sys
input = sys.stdin.readline

# 입력 받기
M = int(input().rstrip()) # 연산의 수
S = set() # 집합

for _ in range(M):
    sen = input().rstrip() # 연산
    cmd = sen.split()[0] # 명령어
    # all
    if cmd == 'all':
        S = ({(i+1) for i in range(20)})
    # empty
    elif cmd == 'empty':
        S.clear()
    else:
        x = int(sen.split()[1]) # 숫자
        
        # add x
        if cmd == 'add':
            S.add(x)
        # remove x
        elif cmd == 'remove':
            S.discard(x) # 있으면 제거, 없으면 연산 무시
        # check x
        elif cmd == 'check':
            if x in S: # x 있으면 1 출력
                print(1)
            else: # 없으면 0 출력
                print(0)
        # toggle x
        elif cmd == 'toggle':
            if x in S:
                S.discard(x)
            else:
                S.add(x)

3. 코드 해설

구현해야 하는 6가지 연산을 하나씩 작성해나가면 된다. 'remove x'에서 x가 S에 없을 경우도 생각해야 하기 때문에 'S.remove(x)' 대신 'S.discard(x)'를 사용해야 한다.