반응형
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 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 |