Algorithm/백준
[알고리즘]백준 1764번: 듣보잡
Im_light.J
2023. 2. 6. 06:07
728x90
알고리즘 유형: 자료구조(해쉬)
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.

풀이
두 유형의 집단에서 중복되어있는 사람을 출력하는 문제이다(듣보잡)
중복의 경우 딕셔너리를 활용하는것이 제일 간편하다
defaultdict의 경우 key 값이 없어도 지정한 값 혹은 default값으로 키에 밸류를 할당해준다
import sys
from collections import defaultdict
N, M =map(int, sys.stdin.readline().strip().split(" "))
blinder =defaultdict(int)
result =[]
for i in range(N):
man = sys.stdin.readline().strip()
blinder[man]+=1
for i in range(M):
man = sys.stdin.readline().strip()
blinder[man]+=1
if blinder[man]==2:
result.append(man)
result= sorted(result)
print(len(result))
for i in result:
print(i)
728x90