[Python] 백준11723 집합

[Python] 백준11723 집합

백준11723 집합 링크

문제

문제

예제 입력

예제


코드

import sys

s = set()
temp = set([i for i in range(1, 21)])
m = int(input())

for _ in range(m):
    msg = list(sys.stdin.readline().split())
    if msg[0] == "add":
        s.add(int(msg[1]))
    elif msg[0] == "remove":
        s.discard(int(msg[1])) # remove는 없을 시 에러
    elif msg[0] == "check":
        if int(msg[1]) in s:
            print(1)
        else :
            print(0)
    elif msg[0] == "toggle":
        try :
            s.remove(int(msg[1]))
        except:
            s.add(int(msg[1]))
    elif msg[0] == "all":
        s = temp.copy()
    elif msg[0] == "empty":
        s.clear()

설명

파이썬을 통해서 사용자로부터 입력받아 조건문/반복문을 사용하여 집합을 구현했습니다. 그리고 자료형 set은 집합을 사용할 때 많이 사용합니다.


정리

import sys

s = list()
m = int(input())

for _ in range(m):
    msg = list(sys.stdin.readline().split())
    if msg[0] == "add":
        if s.count(int(msg[1])) == 0:
            s.append(int(msg[1]))
    elif msg[0] == "remove":
        if s.count(int(msg[1])) == 1:
            s.remove(int(msg[1]))
    elif msg[0] == "check":
        if s.count(int(msg[1])) == 1:
            print(1)
        else :
            print(0)
    elif msg[0] == "toggle":
        if s.count(int(msg[1])) == 1:
            s.remove(int(msg[1]))
        else :
            s.append(int(msg[1]))
    elif msg[0] == "all":
        s.clear()
        for i in range(1, 21):
            s.append(i)
    elif msg[0] == "empty":
        s.clear()
    elif t[0] == "check":
        st = set([t[1]])
        temp_set = st&s
        if len(temp_set)==1:
            print(1)
        else: print(0)
    if t[0] == "toggle":
        st = set([t[1]])
        temp_set = st&s
        if len(temp_set)==1:
            s.discard(t[1])
        else: s.add(t[1])

그 외에도 자료형 list를 사용하여 구현 가능하며 집합끼리 교집합하여 조건을 만족시킬 수 있습니다.


결과

결과


© 2022. All rights reserved. 신동민의 블로그