접근
트라이에 insert, search 함수를 구성하여 문제를 풀 수 있었다.
코드
import sys
class Node:
def __init__(self, key):
self.key = key
self.children = dict()
class Trie:
def __init__(self):
self.head = Node(None)
def insert(self, string):
curr_node = self.head
for char in string:
if char not in curr_node.children:
curr_node.children[char] = Node(char)
curr_node = curr_node.children[char]
def search(self, string):
curr_node = self.head
for char in string:
if char not in curr_node.children:
return False
curr_node = curr_node.children[char]
return True
trie = Trie()
n, m = map(int, sys.stdin.readline().split())
for _ in range(n):
tmp = list(sys.stdin.readline())
trie.insert(tmp)
cnt = 0
for _ in range(m):
tmp = list(sys.stdin.readline())
if trie.search(tmp):
cnt += 1
print(cnt)
더 생각해 볼 것?
...
코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!
반응형
'코딩 > 백준 (Python)' 카테고리의 다른 글
백준 2252번: 줄 세우기 (Python) (0) | 2021.06.20 |
---|---|
백준 5670번: 휴대폰 자판 (Python, PyPy3) (0) | 2021.06.20 |
백준 14725번: 개미굴 (Python) (0) | 2021.06.19 |
백준 10266번: 시계 사진들 (Python) (0) | 2021.06.19 |
백준 1305번: 광고 (Python) (0) | 2021.06.19 |
최근댓글