1. 문제
https://www.acmicpc.net/problem/14425
2. 풀이
2.1. 오답 풀이
집합을 이용하여 N과 M 문자열 집합의 교집합을 사용해서 문제를 해결했습니다.
N, M = map(int, input().split())
N_set, M_set = set(), set()
for _ in range(N):
N_set.add(input())
for _ in range(M):
M_set.add(input())
print(len(N_set & M_set))
2.2. 정답 풀이
M 문자열에 동일한 문자열이 들어오는 경우를 고려하지 않으면, 위의 문제 풀이는 오답이 됩니다. 동일한 문자열이 들어올 수 있기 때문에, 하나씩 세주는 것이 맞는 풀이입니다.
N, M = map(int, input().split())
N_set = set()
answer = 0
for _ in range(N):
N_set.add(input())
for _ in range(M):
if input() in N_set:
answer += 1
print(answer)