문제 바로가기> 백준 1764번: 듣보잡
python의 set의 교집합 연산을(&
)을 이용하면 문제를 쉽게 해결할 수 있다.
def solution():
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
heard, saw = [], []
for i in range(n): heard.append(input().rstrip())
for i in range(m): saw.append(input().rstrip())
heard, saw = set(heard), set(saw)
ans = list(heard & saw)
ans.sort()
print(len(ans))
for i in range(len(ans)): print(ans[i])
solution()
다음과 같이 sys.stdin.read().splitlines()
을 사용하여 입력을 한번에 받은 후 n개 까지
,이후
두개 로 나누어서 set으로 만들어줘도 된다.
def solution():
import sys
n, m = map(int, sys.stdin.readline().split())
li = sys.stdin.read().splitlines()
heard, saw = set(li[:n]), set(li[n:])
ans = list(heard & saw)
ans.sort()
print(len(ans))
for i in range(len(ans)): print(ans[i])
solution()