import sys
n = int(sys.stdin.readline())
S = []
for _ in range(n):
m, num = input().split()
if m == 'add':
S.append(int(num))
elif m == 'remove':
S.remove(int(num))
elif m == 'check':
if int(num) in S:
print(1)
else:
print(0)
elif m == 'toggle':
if int(num) in S:
S.remove(int(num))
else:
S.append(int(num))
elif m == 'all':
S = [i for i in range(1, 21)]
elif m == 'empty':
S = []
이런식으로 배열로 하려했는데 오류가 많았다
- all 에서 m만 입력할 경우 처리하기
- 중복 없애기
import sys
n = int(sys.stdin.readline())
S = set()
for _ in range(n):
temp = sys.stdin.readline().split()
if len(temp) == 1:
if temp[0] == "all":
S = set([i for i in range(1, 21)])
else:
S = set()
else:
func, x = temp[0], temp[1]
x = int(x)
if func == "add":
S.add(x)
elif func == "remove":
S.discard(x)
elif func == "check":
print(1 if x in S else 0) # 이런 방식 애용하자
elif func == "toggle":
if x in S:
S.discard(x)
else:
S.add(x)
pypy로 하면 실패 => 메모리 더 잡아먹음
python3로 성공
'알고리즘' 카테고리의 다른 글
<백준> 1780번 파이썬 알고리즘 [분할 정복] (0) | 2021.11.06 |
---|---|
<백준> 18870번 파이썬 알고리즘 [딕셔너리] (0) | 2021.11.06 |
<백준> 11279번 파이썬 알고리즘 [최대 힙] (0) | 2021.11.02 |
<백준> 7662번 파이썬 알고리즘 [최소,최대 힙] (0) | 2021.11.02 |
<백준> 2630번 파이썬 알고리즘 [재귀함수] (0) | 2021.10.31 |