문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
문제 풀이
듣도 못한 사람의 명단, 보도 못한 사람의 명단이 주어질 때
듣도 보도 못한 사람의 명단을 구하는 문제입니다.
즉, 각각의 문자열이 주어졌을 때
공통 문자열을 찾는 문제입니다.
처음 문제를 해결 할때
for 문을 이용하여 만약 공통 문자열을 찾으면
새로운 list에 추가해주는 방식으로 문제를 해결했습니다.
하지만 이러한 방식은 시간 초과를 발생시켰습니다.
따라서 Set 함수를 이용해주었습니다.
Set 함수는 집합 자료형을 만들어주는 함수로
교집합, 합집합, 차집합과 같은 연산을 수행할 수 있습니다.
입력 받은 각 문자열을 Set 함수로 집합 자료형으로 만들어준 뒤
교집합 연산을 이용하면 공통 문자열을 찾아낼 수 있습니다.
My Code
n, m = map(int,input().split()) # 듣도 못한 사람 수, 보도 못한 사람 수
a = set()
for _ in range(n):
a.add(input()) # 듣도 못한 사람의 이름
b = set()
for _ in range(m):
b.add(input()) # 보도 못한 사람의 이름
result = list(a & b) # 교집합
result.sort() # 찾아낸 공통 문자열 정렬
print(len(result)) # 듣보잡의 수
for i in result:
print(i) # 듣보잡의 명단
'백준(Python) 풀이' 카테고리의 다른 글
백준 1037번. 약수 (Python / 파이썬) (0) | 2022.04.29 |
---|---|
백준 4375번. 1 (Python / 파이썬) (0) | 2022.04.29 |
백준 1743번. 음식물 피하기 (Python / 파이썬) (0) | 2022.04.22 |
백준 1926번. 그림 (Python / 파이썬) (0) | 2022.04.22 |
백준 1325번. 효율적인 해킹 (Python / 파이썬) (0) | 2022.04.22 |
댓글