반응형
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
예제 입력3 4ohhenrie charlie baesangwook obama baesangwook ohhenrie clinton |
예제 출력2baesangwook ohhenrie |
풀이
리스트를 받아서 중복된 것만 사전 순으로 출력하는 문제이다.
N,M은 최대 500,000으로 매우 크기 때문에 자칫하면 시간초과가 발생할 수 있다.
파이썬의 경우 dictionary 자료형을 사용해 빠르게 값을 찾을 수 있다.
많은 값을 받으니 sys.stdin.readline의 사용은 필수이다.
readline을 사용해 문자열을 받을 때, 개행 문자까지 받게 되므로 rstrip()을 해 주는 것도 잊지 말자.
import sys
input = sys.stdin.readline
n,m = map(int,input().split())
L = dict()
result = []
for i in range(n):
L[input().rstrip()] = i
for i in range(m):
temp = input().rstrip()
if L.get(temp) != None:
result.append(temp)
# 목록에 없는 경우 None을 반환하게 되는 것을 이용
result.sort()
# 사전 순으로 정렬
print(len(result))
for i in result:
print(i)
반응형
'알고리즘 연습 > 집합과 맵' 카테고리의 다른 글
[🥈3 / 백준 11478 / 파이썬] 서로 다른 부분 문자열의 개수 (0) | 2022.05.11 |
---|---|
[🥈3 / 백준 1269 / 파이썬] 대칭 차집합 (0) | 2022.05.09 |
[🥈3 / 백준 14425 / 파이썬] 문자열 집합 (0) | 2022.03.10 |
[🥈4 / 백준 10815 / 파이썬] 숫자 카드 (0) | 2021.08.14 |
[🥈4 / 백준 1620 / 파이썬] 나는야 포켓몬 마스터 이다솜 (0) | 2021.07.11 |