[Python]BaekJoon.AC

[Python]백준 BaekJoon.AC 1764 : 듣보잡(set, sorted())

스뇨잉 2022. 2. 1. 02:18
728x90
728x90

 

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

 

1764번: 듣보잡

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

www.acmicpc.net

 

 

 

set을 제대로 몰라 한참 헤맸다.

지금까진 중복 제거하는 목적으로만 사용해서... set이 집합의 의미를 가지고 있는지 모르고 있었다.

 

 

고로 set은 합집합, 교집합, 차집합을 능숙히 해낼 수 있는 아이였던 것이다..!

이런 기능도 모르고 리스트나 딕셔너리로 삽을 펐으니..

 

 

 

<합집합>

a = set([1, 2, 3])
b = set([3, 4, 5])
print(a|b)

출력:{1, 2, 3, 4, 5}

 

<교집합>

a = set([1, 2, 3])
b = set([3, 4, 5])
print(a&b)

출력:{3}

 

<차집합>

a = set([1, 2, 3])
b = set([3, 4, 5])
print(a-b)

출력:{1, 2}

 

 

예시만큼 이해가 빠른건 없다..

 

더이상의 설명은 필요하지 않다. 이 문제에서 필요한 기능은 교집합이다.

만들어진 교집합은 리스트에 담아 sorted 처리해줬다.

 

 

 

import sys

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

listen = set()
for n in range(N):
    listen.add(sys.stdin.readline().strip())

see = set()
for m in range(M):
    see.add(sys.stdin.readline().strip())

result = sorted(list(listen & see))

print(len(result))
for re in result:
    print(re)

 

 

728x90
728x90