Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Tistory
- CleanCode
- 가사 검색
- 티스토리 open api
- 호텔 방 배정
- 티스토리
- 보행자 천국
- 불량 사용자
- 징검다리 건너기
- 카카오 인턴
- 튜플
- Python
- trie
- jdbc
- 크레인 인형뽑기 게임
- Spring Boot
- 프로그래머스
- bulk update
- 트라이
- Open API
- 트라이 #trie #알고리즘
- pycon
- 알고리즘
Archives
- Today
- Total
택시짱의 개발 노트
python으로 Trie 구현 with defaultdict 본문
class TrieNode:
def __init__(self):
self.word = False
self.children = dict()
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self,word : str) -> None:
node = self.root
for char in word:
if char not in node.children:
node.children[char] = TrieNode()
node = node.children[char]
node.word= True
def search(self,word : str)-> bool:
node = self.root
for char in word:
if char not in node.children:
return False
node = node.children[char]
return node.word
trie = Trie()
trie.insert('apple')
if trie.search('appe'):
print("YES")
else:
print("NO")
### childeren 부분을 dict가 아닌 defaultdict를 이용
import collections
class TrieNode:
def __init__(self):
self.word = False
self.children = collections.defaultdict(TrieNode)
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self,word : str) -> None:
node = self.root
for char in word:
node = node.children[char]
node.word= True
def search(self,word : str)-> bool:
node = self.root
for char in word:
if char not in node.children:
return False
node = node.children[char]
return node.word
trie = Trie()
trie.insert('apple')
if trie.search('apple'):
print("YES")
else:
print("NO")
그냥 dict를 사용하는것과 defaultdict를 사용하는 것에 대한 차이는
insert부분에서 childeren이 없을때 에서 차이가 난다
먼저 dict 해당 알파벳에 대한 자식이 있는지 if 문을 통하여 확인하여 없다면 Trienode를 할당 해줘야되지만
defaultdict는 해당 자신이 없다면 자동으로 생성해주기 때문에 if문을 굳이 사용하지 않아도 된다.
반응형
'python' 카테고리의 다른 글
pycon - 우아하게 준비하는 테스트와 리팩토링 ( 클린코드 ) (0) | 2021.07.24 |
---|---|
Python 기본 개념 공부.. (0) | 2020.11.22 |
python heapq 모듈 (0) | 2020.09.08 |
python 입력 받기 (0) | 2020.08.31 |
python Context manager (0) | 2020.07.18 |
Comments