[백준/ 파이썬] 1764 듣보잡

#문제링크

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

 

1764번: 듣보잡

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

www.acmicpc.net

#나의풀이

import sys

if __name__ == '__main__':
    N, M = map(int, sys.stdin.readline().split())
    no_see_people = set()
    no_listen_people = set()
    result = []

    for _ in range(N):
        no_see_people.add(sys.stdin.readline().rstrip())

    for _ in range(M):
        no_listen_people.add(sys.stdin.readline().rstrip())

    result = sorted(list(no_listen_people & no_see_people))
    print(len(result))
    for man in result:
        print(man)

#해설

첫번째 집단과 두번째 집단의 교집합을 구하면 되는 문제

주어진 N과 M의 개수를 봤을때 N^2이 되는순간 시간초과되는게 눈에 보였다.

배열과 딕셔너리를 생각해도 무조건 넘어갈꺼 같았고 새로운 방법을 찾아야했다.

 

집합 자료형에서 합집합, 교집합, 차집합을 구할수 있다는걸 찾았고 이를 이용해서 풀었다.

입력값에 \n이 있는거 같으므로 rstrip을 사용해서 받았고 &을 사용해서 교집합을 구하고 출력해주었다.

 

실버4라고 막상 쉬운줄 알았는데 파이썬의 기초를 다시 배울수 있었던것 같다.

 

#도움받은곳

https://wook-2124.tistory.com/476

 

백준 알고리즘 | 1764 : 듣보잡 (Python / 파이썬)

듣보잡 성공분류 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 256 MB 22109 8859 6283 39.320% https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못..

wook-2124.tistory.com