[Silver IV] 듣보잡 - 1764
성능 요약
메모리: 38300 KB, 시간: 80 ms
분류
자료 구조, 문자열, 정렬, 집합과 맵, 해시를 사용한 집합과 맵
제출 일자
2025년 2월 23일 21:09:15
문제 설명
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
💡 해결 방법
💻 코드
# 문제
# 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때,
# 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
# 입력
# 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이
# 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과,
# N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며,
# 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
# 듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
# 출력
# 듣보잡의 수와 그 명단을 사전순으로 출력한다.
# 예제 입력 1
# 3 4
# ohhenrie
# charlie
# baesangwook
# obama
# baesangwook
# ohhenrie
# clinton
# 예제 출력 1
# 2
# baesangwook
# ohhenrie
import sys
inputf = sys.stdin.readline
outputf = sys.stdout.write
n, m = map(int, inputf().split())
ans = {}
for i in range(0, n):
ans[inputf().strip()] = 1
for i in range(0 , m):
temp = inputf().strip()
if temp in ans:
ans[temp] += 1
count = 0
ans_out = []
for i in ans:
if ans[i] == 2:
count += 1
ans_out.append(i)
ans_out.sort()
print(count)
print(*ans_out, sep = '\n')