◼ PS Note/백준
[백준] 1764번: 듣보잡 (🥈실버 4) (Python)
SangYoonLee (SYL)
2024. 1. 14. 20:56
반응형
문제 바로 가기
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
풀이
- 사용 언어 : Python
- 풀이한 날짜 : 2024-01-11
n, m = tuple(map(int, input().split()))
not_heard = [
input()
for _ in range(n)
]
not_seen = [
input()
for _ in range(m)
]
not_heard = set(not_heard)
not_seen = set(not_seen)
answer = not_heard.intersection(not_seen)
# for elem in not_seen:
# if elem in not_heard:
# answer.append(elem)
answer = list(answer)
answer.sort()
print(len(answer))
for elem in answer:
print(elem)
풀이 로직
- '듣도 못한 사람'과 '보도 못한 사람'의 교집합에 해당하는 사람들을 완전 탐색을 통해 구한다.
- 다만, 리스트(배열) 자료구조를 활용하면 시간 초과가 발생하기 때문에 해시 테이블(파이썬에선 set이나 딕셔너리)을 사용하여 문제를 해결해주어야 한다.
- 파이썬의 set를 활용, 내부 함수인 intersection을 통해 두 집합의 교집합을 구한 후, sort()를 통해 사전 순으로 정렬하여 문제를 해결하였다.
문제 접근 과정 및 느낀점
해시 함수의 특징은 이해하고 있었으나, 이를 알고리즘 문제 해결에 활용해본 적이 없어 난항을 조금 겪었던 문제였다.
이번 기회가 좋은 경험이 되었다고 생각한다.
반응형