백준/백준 파이썬
백준 파이썬 11723번 집합 (Today I Learn 2024.04.03)
군청레프
2024. 4. 3. 10:55
728x90
20240403 백준 파이썬 공부
11723번 집합
1. 문제
비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오.
- add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다.
- remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다.
- check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20)
- toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)
- all: S를 {1, 2, ..., 20} 으로 바꾼다.
- empty: S를 공집합으로 바꾼다.
2. 입력
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다.
둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
3. 출력
check 연산이 주어질때마다, 결과를 출력한다.
>>>코드1. 함수로 풀어보기
import sys
s = set()
# add 함수
def add(x):
if x not in s:
s.add(x)
return 0
# remove 함수
def remove(x):
if x in s:
s.remove(x)
return 0
# check 함수
def check(x):
if x in s:
print(1)
else:
print(0)
return 0
# toggle 함수
def toggle(x):
if x in s:
s.remove(x)
else:
s.add(x)
return 0
for _ in range(int(input())):
com = list(sys.stdin.readline().split())
if com[0] == 'add':
add(int(com[1]))
elif com[0] == 'remove':
remove(int(com[1]))
elif com[0] == 'check':
check(int(com[1]))
elif com[0] == 'toggle':
toggle(int(com[1]))
elif com[0] == 'all':
s = set(range(1, 21))
elif com[0] == 'empty':
s = set()
>>>코드2. 그냥 조건문으로 풀기
import sys
s = set()
for _ in range(int(input())):
com = list(sys.stdin.readline().split())
if len(com) == 2:
x = int(com[1])
if com[0] == 'add':
if x not in s:
s.add(x)
elif com[0] == 'remove':
if x in s:
s.remove(x)
elif com[0] == 'check':
if x in s:
print(1)
else:
print(0)
elif com[0] == 'toggle':
if x in s:
s.remove(x)
else:
s.add(x)
elif com[0] == 'all':
s = set(range(1, 21))
elif com[0] == 'empty':
s.clear()
>>함수를 이용한 코드가 더 길지만 시간을 미세하게 짧게 걸렸다.
>>>문제링크
https://www.acmicpc.net/problem/11723
728x90