[Python] 백준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를 사용하여 구현 가능하며 집합끼리 교집합하여 조건을 만족시킬 수 있습니다.