알고리즘/백준

[python] 백준 1764번 듣보잡

펄찌 2022. 2. 1. 14:12

문제 풀이

간단하게 생각하면 듣도 못한 사람들과 보도 못한 사람들의 교집합을 구하면 되는 문제이다.

합쳐서 듣보잡의 수와 해당하는 사람들을 출력하면 되는 것이다.

 

예제 입력1에서 듣도 보도 못한 사람들의 교집합에는 ohhennrie baesangwook 두 사람이 있기 때문에 출력의 결과가 이렇다.

 

여기서 생각한 방법은 set함수를 이용하는 것이었다.

list도 있겠지만 입력에서 보면 N, M은 500,000 이하의 자연수 즉 입력을 N, M 합쳐 백만 번 정도를 돌린다는 소리인데...

분명 시간초과가 날것이기 때문에 list보다는 set을 이용하게 되었다.

 

집합을 만들어주고 해당 교집합을 구하여 출력할 때 사전 순으로 출력하라고 했기 때문에 정렬 함수인 sorted를 이용해주면 된다.

 

완성된 코드!!👌😊

N, M = map(int, input().split())
not_listen, not_watch = set(), set()

for i in range(N):
    not_listen.add(input())
for i in range(M):
    not_watch.add(input())

rs = sorted(not_listen & not_watch)

print(len(rs))
for val in rs:
    print(val)