[백준 11723] 집합
11723번 : 집합
방법 1 (틀림)
-
틀린이유 1
all_s = {i for i in range(1, 21)}
- cmd 는 str 으로 입력받기 때문에 all_s 는 int형이 아닌 str 형을 저장하고 있는 집합이어야 함
-
틀린이유 2
s.remove(cmd[1])
- 비어있는 s를 remove 하는 경우 value error 발생
import sys
input = sys.stdin.readline
if __name__ == '__main__':
n = int(input())
s = set()
all_s = {i for i in range(1, 21)}
for _ in range(n):
cmd = list(input().split())
if cmd[0] == 'add':
s.add(cmd[1])
elif cmd[0] == 'remove':
s.remove(cmd[1])
elif cmd[0] == 'check':
if cmd[1] in s:
print(1)
else:
print(0)
elif cmd[0] == 'toggle':
if cmd[1] in s:
s.remove(cmd[1])
else:
s.add(cmd[1])
elif cmd[0] == 'all':
s = all_s
elif cmd[0] == 'empty':
s.clear()
방법 2 (옳은 풀이)
- all_s 는 1 ~ 20 (str) 을 저장하고 있는 집합
- 비어있는 s에 remove 시도시, pass
import sys
input = sys.stdin.readline
if __name__ == '__main__':
n = int(input())
s = set()
all_s = {str(i) for i in range(1, 21)}
for _ in range(n):
cmd = list(input().split())
if cmd[0] == 'add':
s.add(cmd[1])
elif cmd[0] == 'remove':
try: s.remove(cmd[1])
except: pass
elif cmd[0] == 'check':
if cmd[1] in s:
print(1)
else:
print(0)
elif cmd[0] == 'toggle':
if cmd[1] in s:
s.remove(cmd[1])
else:
s.add(cmd[1])
elif cmd[0] == 'all':
s = all_s
elif cmd[0] == 'empty':
s.clear()