반응형
https://www.acmicpc.net/problem/11723
문제
비어있는 공집합 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를 공집합으로 바꾼다.
입력
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다.
둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
출력
check 연산이 주어질때마다, 결과를 출력한다.
풀이
처음에는 배열로 풀었으나 시간초과 + 메모리초과가 나와서 고민했다.
https://www.educative.io/answers/tuples-vs-list-in-python
튜플은 배열보다 메모리를 적게 사용하고, 또 이 문제에서는 내부에 x가 중복으로 속해 있지 않으니 tuple로 풀어보았다!
python 코드
# 11723 집합
import sys
S = set([])
M = int(sys.stdin.readline())
for tc in range(M):
oper = sys.stdin.readline().split()
if len(oper) <= 1:
if oper[0] == 'all':
S = set(['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20'])
elif oper[0] == 'empty':
S = set([])
else:
if oper[0] == 'add':
S.add(oper[1])
elif oper[0] == 'remove':
if oper[1] in S:
S.remove(oper[1])
elif oper[0] == 'check':
if oper[1] in S:
print(1)
else:
print(0)
elif oper[0] == 'toggle':
if oper[1] in S:
S.remove(oper[1])
else:
S.add(oper[1])
# print(S)
# 11723 집합
import sys
S = set([])
M = int(sys.stdin.readline())
for tc in range(M):
oper = sys.stdin.readline().split()
if len(oper) <= 1:
if oper[0] == 'all':
S = set(['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20'])
elif oper[0] == 'empty':
S = set([])
else:
if oper[0] == 'add':
S.add(oper[1])
elif oper[0] == 'remove':
if oper[1] in S:
S.remove(oper[1])
elif oper[0] == 'check':
if oper[1] in S:
print(1)
else:
print(0)
elif oper[0] == 'toggle':
if oper[1] in S:
S.remove(oper[1])
else:
S.add(oper[1])
# print(S)
반응형
'study > 백준' 카테고리의 다른 글
[백준] 1764.듣보잡 : python (0) | 2022.07.16 |
---|---|
[백준] 1003. 피보나치 함수 : python (0) | 2022.07.15 |
[백준] 1012. 유기농 배추 : python (0) | 2022.07.13 |
[백준] 1620. 나는야 포켓몬 마스터 이다솜 : python (0) | 2022.07.12 |
[백준] 10039. 평균 점수 : python (0) | 2022.07.11 |