Files
baekjoon-study/workbook_8708/silver/22233-s3.py
2026-02-23 11:14:50 +09:00

38 lines
1.2 KiB
Python

# 가희와 키워드
import sys
input = sys.stdin.readline
def solution():
n, m = map(int, input().rstrip().split())
memo = set()
for _ in range(n):
memo.add(input().rstrip())
for _ in range(m):
for keyword in input().rstrip().split(","):
if keyword in memo:
memo.remove(keyword)
print(len(memo))
return
solution()
"""
걸린 시간: 20분
시간 복잡도: 한 글에 최대 키워드가 10개이므로, set으로 차집합을 구하면 두 집합 중 작은 것만큼 시간이 드는데,
작은 것의 최대 길이가 10이므로 O(10m)이다. set의 길이는 key의 개수이므로 O(1)이기 때문이다.
해설: 처음에는 memo - keyswords를 했는데 이 연산은 비파괴 연산이라 기존 set들을 유지해야하므로
차집합된 set을 새로 만든다. 따라서 memo 길이만큼의 시간이 든다.
그래서 in으로 있는지 확인(O(1))하고, remove(O(1))로 지웠다.
remove는 key가 없으면 keyerror가 나는데 그래서 나는 있을 때만 지워서 괜찮았고,
discard를 쓰면 있으면 지우고 없으면 그냥 가만히 있는다고 한다.
"""