[백준][python] 1764번: 듣보잡
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
🌝 Thinking
두 데이터 집합에서 공통 부분을 추출해야했다.
그래서 파이썬의 집합함수를 이용하기로 했다.
교집합을 이용
- set1 & set2
- set1.intersection(set2)
중 하나를 사용하면 되었고 나는 1번을 사용하여 문제를 해결하였다.
💡 깨달은 점.
- 문득 다른 풀이 방법에는 어떤 것들이 있을까해서 찾아보았는데, 이분탐색과 in연산자를 활용한 풀이들을 확인 해 볼 수 있었다.
댓글남기기