최대 1 분 소요

1764번: 듣보잡

문제

김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.

입력 조건

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다.

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

이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.

듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.

출력 조건

듣보잡의 수와 그 명단을 사전순으로 출력한다.


첫 번째 시도 .

n,m = map(int,input().split())

no_hear = [input() for _ in range(n)]
no_look = [input() for _ in range(m)]

no_hear_look = set(no_hear) & set(no_look)
no_hear_look = sorted(list(no_hear_look))

print(len(no_hear_look))
print(*no_hear_look,sep='\n')

»intput

3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton

»output

2
baesangwook
ohhenrie

success

image-20220220211520719


🌝 Thinking

두 데이터 집합에서 공통 부분을 추출해야했다.

그래서 파이썬의 집합함수를 이용하기로 했다.

교집합을 이용

  1. set1 & set2
  2. set1.intersection(set2)

중 하나를 사용하면 되었고 나는 1번을 사용하여 문제를 해결하였다.




💡 깨달은 점.

  1. 문득 다른 풀이 방법에는 어떤 것들이 있을까해서 찾아보았는데, 이분탐색in연산자를 활용한 풀이들을 확인 해 볼 수 있었다.

댓글남기기