본문 바로가기
Problem Solving/백준

백준 문자열 집합 - 14425 [파이썬, 자료 구조, 해시를 사용한 집합과 맵, 문자열, 트리를 사용한 집합과 맵]

by JC_ 2023. 5. 4.
 

14425번: 문자열 집합

첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.  다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어

www.acmicpc.net

이 문제는 잘못 접근하면 시간초과가 발생할 수 있는 문제이다.
input 대신 sys.stdin.readline()을 이용하고
list 대신 set이나 dictionary를 이용해야 한다.
#######################################################
import sys
#######################################################
n, m = map(int, input().split(" "))
s = set([sys.stdin.readline() for _ in range(n)])   # 속도를 위해 sys.stdin.readline() 을 사용하고 set도 이용해준다.

cnt = 0                                             # 중복이 몇개나 있는지 cnt할 변수
for i in range(m):                                  # m개 만큼 돌아본다.
    c = sys.stdin.readline()                        # 입력을 바로 받아서
    if c in s:                                      # 들어있는지 비교
        cnt += 1                                    # 들어있다면 cnt 올린다.

print(cnt)

댓글