백준 1764번 듣보잡 문제풀이,

백준 #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)

출력 코드는 위와 같습니다.