https://www.acmicpc.net/problem/11723
https://github.com/stellaluminary/Baekjoon
원하는대로 구현. But 시간초과
s = []
for i in range(int(input())):
a = list(input().split())
if a[0] == 'add':
if a[1] not in s:
s.append(a[1])
elif a[0] == 'remove':
if a[1] in s:
del s[s.index(a[1])]
elif a[0] == 'check':
if a[1] in s:
print(1)
else:
print(0)
elif a[0] == 'toggle':
if a[1] in s:
del s[s.index(a[1])]
else:
s.append(a[1])
elif a[0] == 'all':
s = [str(i) for i in range(1, 21)]
elif a[0] == 'empty':
s = []
set은 list에 비해 훨씬 빠르게 그 값을 넣고 빼는 것이 가능하다.
또한, set에서 remove는 파일이 존재하지 않다면 error가 나는 삭제 명령어라면 discard는 에러가 발생하지 않는 삭제 명령어이다.
그럼에도 불구하고 시간 초과
import sys
s = set()
for i in range(int(input())):
a = sys.stdin.readline().rstrip().split()
if a[0] == 'add':
s.add(a[1])
elif a[0] == 'remove':
s.discard(a[1])
elif a[0] == 'check':
print(1 if a[1] in s else 0)
elif a[0] == 'toggle':
if a[1] in s:
s.discard(a[1])
else:
s.add(a[1])
elif a[0] == 'all':
s = set([str(i) for i in range(1, 21)])
elif a[0] == 'empty':
s = set()
입력받은 a의 길이가 1일때와 그렇지 않을 때를 구분한다.
또한, func, v로 나눠 입력받아 넣어야만 시간 초과가 나지 않는다.
(방법 2와 같이 a[0]와 a[1]으로 입력받았다가 시간 초과날 수 있음)
import sys
s = set()
for i in range(int(input())):
a = sys.stdin.readline().rstrip().split()
if len(a) == 1:
if a[0] == 'all':
s = set([i for i in range(1, 21)])
else:
s = set()
continue
func, v = a[0], int(a[1])
if func == 'add':
s.add(v)
elif func == 'remove':
s.discard(v)
elif func == 'check':
print(1 if v in s else 0)
elif func == 'toggle':
if v in s:
s.discard(v)
else:
s.add(v)