https://www.acmicpc.net/problem/22233
이 문제는 중복방지를 위해 set 또는 딕셔너리를 사용해야 했다.
그러나 셋은 키워드의 삭제를 위해 또 다시 반복문을 돌려야했으므로 딕셔너리의 사용이 알맞아 보였다.
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
dic = {}
for _ in range(m):
st = input().strip()
st = st.split(',')
for i in st:
if i in st:
dic[i] = 0
# print(dic)
result = [key for key, value in dic.items() if value == 1]
print(len(result))
처음 작성한 코드였다.
보기엔 아무런 문제가 없었으나 result를 구하는 과정에서 시간초과가 발생했다.
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
dic = {}
cnt = 0
for _ in range(n):
s = input().strip()
cnt += 1
dic[s] = 1
for _ in range(m):
st = input().strip()
st = st.split(',')
for j in st:
if j in dic:
cnt -= 1
del dic[j]
print(cnt)
때문에 cnt라는 변수를 선언하여 대신 카운트를 세도록 하였다.