개발/algorithm

[백준 1764번] 듣보잡 - python

zzi_on2 2022. 2. 14. 00:50

문제 링크

https://www.acmicpc.net/problem/1764

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.

www.acmicpc.net

풀이

- defaultdict 사용 

- 이름을 key로 하여 등장했을 때 value 값 + 1 

- 듣도 보도 못한 사람은 value 값이 2 이므로, dic을 for 문으로 value 값이 2인 key를 answer에 삽입, cnt + 1 

- 다른 사람의 풀이를 찾아보니 set을 사용한 경우가 많았다. 

from collections import defaultdict
n, m = map(int,input().split())

dic = defaultdict(int)
for _ in range(n):
  s = input()
  dic[s] += 1 

for _ in range(m):
  s = input()
  dic[s] += 1 

# 사람 이름 저장 
answer = []
# 총 사람 수 저장 
cnt = 0 
for i in dic:
  if dic[i]== 2 :
    answer.append(i)
    cnt += 1 

print(cnt)
# 사전 순으로 정렬 
answer.sort()
for i in answer:
  print(i)