백준 #1764: 듣기와 듣기 문제 풀기 (Python)
1764호의 내용은 다음과 같습니다.
듣다
문제
김진영이 소식을 듣지 못한 사람의 목록과 신고하지 않은 사람의 목록을 가져오는 프로그램을 작성하세요.
기입
첫 번째 줄은 N에게 들어본 적이 없는 사람의 수를, M은 들어본 적이 없는 사람의 수를 제공합니다.
그리고 2번째 줄부터 N번째 줄까지 N+2번째 줄부터 순서대로 안듣는 사람의 이름과 보이지 않는 사람의 이름을 적는다.
이름은 공백 없이 알파벳 소문자로만 구성되며 최대 20자입니다.
N 및 M은 50만 이하의 자연수이다.
Outrageous List에는 중복 이름이 없으며 Outrageous List도 마찬가지입니다.
누르다
부하 직원의 수와 해당 목록을 알파벳순으로 반환합니다.
샘플 입력 1 복사
3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton
예제 출력 1 복사
2
baesangwook
ohhenrie
#듣보잡
import sys
N, M = map(int, sys.stdin.readline().split())
people1 = set()
people2 = set()
ans = set()
for _ in range(N):
people1.add(sys.stdin.readline().rstrip())
for _ in range(M):
people2.add(sys.stdin.readline().rstrip())
ans = list(people1 & people2)
ans.sort()
print(len(ans))
for i in ans:
print(i)
이 문제를 해결하기 위해 집합 데이터 유형을 사용했습니다.
import sys
N, M = map(int, sys.stdin.readline().split())
people1 = set()
people2 = set()
ans = set()
for _ in range(N):
people1.add(sys.stdin.readline().rstrip())
for _ in range(M):
people2.add(sys.stdin.readline().rstrip())
문제에 필요한 입력값을 받기 위한 코드는 위와 같습니다.
people1에는 알 수 없는 사람이 포함되어 있습니다.
Persons2에는 보이지 않는 사람이 입력되어 저장되었습니다.
ans = list(people1 & people2)
ans.sort()
다음에는 들어본 적 없는 사람을 찾아야 하기 때문에
People1과 People2를 통해 두 날짜의 교차점을 찾고,
이름은 오름차순으로 정렬됩니다.
print(len(ans))
for i in ans:
print(i)
출력 코드는 위와 같습니다.