문제
처음에 문제를 접근했을 때, 평소 자주 사용하는 리스트와 in 연산을 활용해 문제를 해결하고자 했습니다. 하지만 결과는 실패였습니다. 그 이유는 N, M이 최대 50,000이기 때문에 리스트와 시간복잡도가 O(N)인 in 연산을 사용해서는 시간초과를 피할 수 없습니다.
-> 시간 초과를 해결하기 위해 파이썬 집합 set 자료구조와 & 비트 연산자를 활용해 교집합을 구해 최종적으로 문제를 해결했습니다.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
listen = [input().rstrip() for _ in range(N)]
see = [input().rstrip() for _ in range(M)]
# 교집합 구하기
ans = list(set(listen) & set(see))
# 오름차순으로 정렬
ans.sort()
print(len(ans))
for a in ans:
print(a)
피드백 및 개선점은 댓글을 통해 알려주세요😊