본문 바로가기
Programming/Programmers

[프로그래머스] [3차] 자동완성(Python)

by 데이터현 2022. 2. 7.

https://programmers.co.kr/learn/courses/30/lessons/17685

 

코딩테스트 연습 - [3차] 자동완성

자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g

programmers.co.kr

Trie 알고리즘을 활용해서 풀었다.

 

나의 풀이

class Trie():
    def __init__(self):
        self.child = dict()
        self.count = 0
    def insert(self,string):
        curr = self
        for str in string:
            if str not in curr.child:
                curr.child[str] = Trie()
            curr = curr.child[str]
            curr.count += 1
    def search(self,string):
        curr = self
        for index, str in enumerate(string):
            if curr.child[str].count == 1 :
                return index + 1
            curr = curr.child[str]
        return index + 1
    def __str__(self):
        return str(self.child)+' '+str(self.count)
    
def solution(words):
    answer = 0
    word_dict = Trie()
    for word in words:
        word_dict.insert(word)
    for word in words:
        answer += word_dict.search(word)
    return answer

 

댓글