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


이번에 정확성과 효율성 테스트로 부분점수가 나뉘었던 가사 검색 문제입니다.

효율성에서 역시나 통과를 못하네요. 시험 당일날 프로그래밍 갤러리에서 해쉬를 써야 한다는 말을 본적이 있는데, 구체적으로 알 수 있을까요?

아니면 코드를 어떻게 고쳐야 할지 아시는 분도 말씀해주시면 감사하겠습니다.


코드는 일단 단어길이에 따라 따로 dict에 list형식으로 저장 한 다음 각 query 별로 길이에 맞춰서 단어들을 매칭 해보는 구조 입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from collections import defaultdict
 
def solution(words,queries) :
    words_dict = defaultdict(list)
    for word in words:
        words_dict[len(word)].append(word)
 
    result = [0]*len(queries)
    for i,query in enumerate(queries):
        if query[0== '?':
            idx = len(query) - query[::-1].find('?')
            result[i] = sum(word.endswith(query[idx:]) for word in words_dict[len(query)])
        else:
            idx = query.find('?')
            result[i] = sum(word.startswith(query[:idx]) for word in words_dict[len(query)])
    return result
cs