공부하기/백준

[Python] 백준 풀기 1764 - 듣보잡

XEV 2023. 10. 12. 23:10

파이썬 백준 1764번

실버 4

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

 

1764번: 듣보잡

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 자료 구조, 문자열, 정렬, 해시를 사용한 집합과 맵

 

 

 

 

 

코드 보기

import sys

# sys.stdin.readline을 사용하여 한 번에 여러 줄을 읽고 대용량 입력을 빠르게 처리
inputdata = sys.stdin.readline


# 입력 데이터를 받아서 딕셔너리로 저장하는 함수
def recordInputData(number):
    tempGroupDict = {}
    for _ in range(number):
        name = inputdata().strip()
        tempGroupDict[name] = True
    return tempGroupDict

# 중복된 이름을 찾는 함수
def findDuplicateNames(notEvenHeard, notEvenSeen):
    duplicateNames = [name for name in notEvenHeard if name in notEvenSeen]
    duplicateNames.sort()
    return duplicateNames

if __name__ == "__main__":
    # 첫번째 그룹과 두번째 그룹의 사람 수 입력
    N, M = map(int, inputdata().split())
    
    # 두 그룹의 이름을 저장할 딕셔너리 초기화
    notEvenHeard = {}
    notEvenSeen = {}
    
    # 첫번째 그룹의 이름 입력 및 저장
    notEvenHeard = recordInputData(N)
    
    # 두번째 그룹의 이름 입력 및 저장
    notEvenSeen = recordInputData(M)
    
    # 중복된 이름 찾기
    duplicateNames = findDuplicateNames(notEvenHeard, notEvenSeen)
    
    # 중복된 이름 개수와 명단 출력
    print(len(duplicateNames))
    for name in duplicateNames:
        print(name)