본문 바로가기

백준

[백준] 1764번: 듣보잡(파이썬)

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

 

1764번: 듣보잡

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

www.acmicpc.net

import sys
a,b = map(int, sys.stdin.readline().split())
listen = []
watch = []

for _ in range(a):
    listen.append(sys.stdin.readline().strip())
for _ in range(b):
    watch.append(sys.stdin.readline().strip())

listen = set(listen)
watch = set(watch)

result = set(listen & watch)
result = list(result)
result.sort()
print(len(result))
for i in result:
    print(i)

시간초과 파티다..

처음엔 list로 풀려고 했는데 계속 시간 초과가 나와서 이런 저런 생각을 하다가, 둘 다 포함되는 것을 찾는 것이기 때문에 교집합이 생각났다.

검색을 해보니 set으로 교집합을 쉽게 구할 수 있었다.

오늘 처음 안 사실이 있는데, set은 순서가 없다는 사실이다.. 그래서 set은 sort를 못한다!

(개념 공부를 열심히 해야겠다...ㅠ)

set을 알면 엄청나게 쉽게 풀 수 있는 문제였던 것 같다.