https://www.acmicpc.net/problem/1764
처음에는 간단하게 듣도 못한 사람을 입력받고, 보도 못한 사람을 입력받을 때 입력받은 사람의 이름이 듣도 못한 사람의 배열에 있는지 확인하는 코드를 짰는데 python3와 pypy3 모두 시간초과가 나왔다...
in 연산에서 시간초과가 나는 것 같았다
# 1764 듣보잡
n, m = map(int, input().split())
heard = [] # 듣도 못한 사람
saw = [] # 보도 못한 사람
hs = [] # 듣보잡
for i in range(n):
heard.append(input())
for i in range(m):
saw.append(input())
if saw[i] in heard:
hs.append(saw[i])
print(len(hs))
hs.sort()
for n in hs:
print(n)
그래서 구글링을 해 보니 교집합 연산을 해서 풀 수 있다는 걸 알았다
교집합으로 푸니까 python3에서도 통과함
겹치는 요소를 찾을 때는 in연산보다 교집합 연산이 효율적이라는 걸 알 수 있었다
# 1764 듣보잡
n, m = map(int, input().split())
heard = [] # 듣도 못한 사람
saw = [] # 보도 못한 사람
hs = [] # 듣보잡
for i in range(n):
heard.append(input())
for i in range(m):
saw.append(input())
hs = list(set(heard) & set(saw))
print(len(hs))
hs.sort()
for n in hs:
print(n)