본문 바로가기

Algorithm/BOJ

백준 (BOJ) - 1764 듣보잡 [Python]

반응형

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

 

1764번: 듣보잡

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

www.acmicpc.net

실버4의 매우 간단한 문제지만 

List 두 개를 만들어서 

for i in List1:
	if i in List2:
    	newList.append(i)

이런 방식으로 시간 복잡도를 개 무시한(?) 코드를 짜버린 나머지 시간 초과가 떴다. 

 

푸는 방법은 정말 간단하다. 

문제가 원하는 답안이 A집합과 B, 두 집합의 교집합임으로 그 것만 구해주면 된다.

 

import sys

N, M = map(int, sys.stdin.readline().split())
heardArr = set()
seenArr = set()

for _ in range(N):
    heardArr.add(sys.stdin.readline().rstrip())
for _ in range(M):
    seenArr.add(sys.stdin.readline().rstrip())

commonArr = sorted(list(heardArr & seenArr))
print(len(commonArr))

for i in commonArr:
    print(i)

한 가지 주의할 점이라하면 set()에 element를 추가할 때는 append함수가 아닌 add 함수를 사용해준다. 

반응형