Problem Solving/BOJ
[BOJ][Python]11723번 풀이
NoiB
2022. 5. 29. 23:53
반응형
https://www.acmicpc.net/problem/11723
11723번: 집합
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
www.acmicpc.net
import sys
input = sys.stdin.readline
S = set([])
m = int(input())
for _ in range(m):
line = input().split()
if len(line)==1:
if line[0] == 'all':
S = set([i for i in range(1,21)])
else:
S.clear()
else:
if line[0] == 'add':
S.add(int(line[1]))
elif line[0] == 'remove':
S.discard(int(line[1]))
elif line[0] == 'check':
if int(line[1]) in S:
print(1)
else:
print(0)
elif line[0] == 'toggle':
if int(line[1]) in S:
S.remove(int(line[1]))
else:
S.add(int(line[1]))
이 비슷한 문제들이 예전에도 있었죠. 해당 문제에서 조심해야 할 부분은 all과 empty의 경우 뒤에 따라오는 숫자가 없다는 점이니 입력의 길이를 체크해서 조건문을 하나 더 이용하면 되겠습니다. 나머지는 그냥 문자열 조건문의 반복이에요. 또한 입력이 꽤 많기 때문에 input() 대신 sys.stdin.readline()을 써주세요. input()으로 하니까 시간 초과가 나더라구요.
반응형