알고리즘/백준

[Python] 백준 1764번 - 듣보잡

번잔중 2022. 8. 20. 22:30
 

1764번: 듣보잡

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

www.acmicpc.net

 

문제

김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.

 

듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.

 

출력

듣보잡의 수와 그 명단을 사전순으로 출력한다.

 

n, m  = map(int, input().split())

n_set = set()
for _ in range(n):
    n_set.add(input())

m_set = set()
for _ in range(m):
    m_set.add(input())

ans = sorted(list(n_set & m_set))

print(len(ans))
for a in ans:
    print(a)

- 듣못과 보못한 사람들은 중복되지 않습니다. 그래서 처음 set이 떠올랐고, 교집합의 특성을 이용하면 될 것 같다고 생각했습니다.

- 2개의 집합에 이름을 저장하고, 두 집합의 교집합을 알파벳순으로 정렬한 리스트를 ans에 저장해주었습니다. set은 정렬이 불가능하기 때문입니다.

- 출력은 ans에 저장된 요소의 길이가 개수이기 때문에 len()을 사용했습니다.

 

*회사 면접, 부트캠프 준비, 라섹 수술 등으로 블로그와 학습에 소홀했습니다. 💦💦

*그러나 이제는 부트캠프에 합격했기 때문에 이전보다도 더 몰입해서 학습한 내용을 정리하려고 합니다.

*뽜이팅!

 

피드백은 언제나 환영합니다.