https://www.acmicpc.net/problem/14425
import sys
read = sys.stdin.readline
n,m = list(map(int, read().split()))
cnt = 0
set_input = set([read() for _ in range(n)])
for _ in range(m):
com_input = read()
if com_input in set_input:
cnt += 1
print(cnt)
우선 집합으로 n개의 문장을 받아온다. 이후 비교해줄 m개의 문자열을 받으면서 집합에 존재한다면 즉시 cnt를 올려주는 방식이다.
자료구조에 따라 존재 여부를 따지는 경우(in 사용)에 시간 복잡도가 다르다고 한다.
set과 dict은 hash table 구조 (key에 데이터를 저장하는 구조, key를 통해 데이터를 받아오기 때문에 빠름)를 사용한다.
이때, set은 key만 있고, dict은 key와 value가 있다.
'Algorithm > Problems' 카테고리의 다른 글
[백준/파이썬] 10816번 숫자 카드2 (0) | 2022.11.18 |
---|---|
[백준/파이썬] 1620번 나는야 포켓몬 마스터 이다솜 (0) | 2022.11.18 |
[백준/파이썬] 10815번 숫자 카드 (0) | 2022.11.18 |
[백준/파이썬] 1436번 영화감독 숌 (0) | 2022.11.17 |
[백준/파이썬] 1018번 체스판 다시 칠하기 (0) | 2022.11.14 |