접근

트라이에 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)

더 생각해 볼 것?

...

코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기