CodingTest/Baekjoon

[백준/Python] 1764번 : 듣보잡

JuniTech 2023. 6. 4. 09:00
728x90
시간 제한  메모리 제한 문제 티어
2 초 256 MB
실버 IV

📜 문제

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

 

📥입력

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

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

 

📤출력

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

 

💡풀이

이 문제의 핵심은 '파이썬 집합 자료형인 Set()를 잘 활용하였는가?' 이다.

우리가 List에 요소를 추가할 때 append()라는 Method를 사용했는데, Set에 요소를 추가할 때는 add()라는 Method를 사용해서 추가한다.

그리고 Set에서 교집합을 구하는 연산인 set1 & set2 또는 set1.interaction(set2) 둘 중 하나를 사용하여 교집합을 구하고, sorted() 함수로 사전순으로 정렬된 리스트를 반환받아 출력하면 끝이다.

아래 코드는 내가 작성한 정답 코드이다.(그나저나 난 변수 네이밍 센스가 없는 것 같다...🤣)

import sys

input = sys.stdin.readline

N, M = map(int, input().rstrip().split())

never_heard_person = set()
never_seen_person = set()

for _ in range(N):
  never_heard_person.add(input().rstrip())

for _ in range(M):
  never_seen_person.add(input().rstrip())

print(len(never_heard_person & never_seen_person))
print('\n'.join(sorted(never_heard_person & never_seen_person)))

 

Reference : https://wikidocs.net/1015#_3(파이썬 집합 자료형)

 

02-6 집합 자료형

`[추천 동영상 강의]` : [https://www.youtube.com/watch?v=nsAtYHnovUA](https://www.youtube.com/watch?v=nsAtY…

wikidocs.net