728x90
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때,
듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1764
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다.
이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
예제
# input
3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton
# output
2
baesangwook
ohhenrie
문제 풀이
import sys
N,M = map(int, sys.stdin.readline().split())
L1 = {sys.stdin.readline().strip() for i in range(N)}
L2 = {sys.stdin.readline().strip() for i in range(M)}
ans = list(L1&L2) # L1과 L2의 교집합을 ans로 선언, 듣지도 보지도 못한 사람
ans.sort() # 사전 순으로 정렬
print(len(ans), *ans, sep='\n') # 예제 출력에 맞추어 출력
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90