백준
[백준] 14425 문자열 집합 - Python
whereisco
2022. 12. 22. 01:35

문제
https://www.acmicpc.net/problem/14425
문자열이 저장된 두개의 리스트 혹은 딕셔너리를 만들어주고, 같은 문자열이 있는 경우를 판별해주면 해결할 수 있는 문제였습니다. 그러나, 이 문제는 해시로 구현된 딕셔너리를 활용하면 데이터를 탐색하는데 시간 복잡도가 O(1)이기 때문에 시간 복잡도를 줄일 수 있습니다.
[Python] - 리스트 활용 시
import sys
input = sys.stdin.readline
n,m = map(int, input().split())
s = [input() for _ in range(n)]
will_check=[input() for _ in range(m)]
count = 0
for i in will_check:
if i in s:
count+=1
print(count)
[Python] - 딕셔너리 활용 시
import sys
input = sys.stdin.readline
n,m = map(int, input().split())
s = dict()
count = 0
for _ in range(n):
s[input()] = True
for _ in range(m):
if input() in s.keys():
count+=1
print(count)
결과

위와 같이 딕셔너리를 활용할 경우 시간 복잡도가 현저히 줄었음을 알 수 있습니다.