[Python3][2020카카오공채] 가사 검색
2019. 10. 7. 01:02 |
프로그래밍/기타
문제 :
https://www.welcomekakao.com/learn/courses/30/lessons/60060
나의 풀이 :
def solution(words, queries):
trie_by_length = [({}, {}) for _ in range(10001)]
for word in words:
length = len(word)
t = trie_by_length[length][0]
for c in word:
t['count'] = t.get('count', 0) + 1
t.setdefault(c, {})
t = t[c]
t = trie_by_length[length][1]
for c in word[::-1]:
t['count'] = t.get('count', 0) + 1
t.setdefault(c, {})
t = t[c]
ans = []
for query in queries:
length = len(query)
if query[0] == '?':
t = trie_by_length[length][1]
query = query[::-1]
else:
t = trie_by_length[length][0]
for c in query:
if c == '?':
ans.append(t.get('count', 0))
break
if c not in t:
ans.append(0)
break
t = t[c]
return ans
한마디 :
정확성 테스트는 아무렇게나 풀어도 쉽게 통과 가능하지만, 효율성 테스트는 Trie를 활용하지 않으면 2개 TC에서 Timeout 발생한다.
'프로그래밍 > 기타' 카테고리의 다른 글
2024 후기 성대경시 초등 4학년 30번 문제 (0) | 2024.10.08 |
---|---|
아파트 실거래가 조회 실거래닷컴 (11) | 2020.02.11 |
[프로그래머스][Python3] 단어 변환 (1) | 2019.11.22 |
[프로그래머스][Python3] 타겟 넘버 (0) | 2019.11.11 |
[Python3][2020카카오공채] 괄호 변환 (0) | 2019.10.04 |
[Python3][2020카카오공채] 문자열 압축 (0) | 2019.10.03 |
[Python] json.dumps 한글 유니코드 (0) | 2019.04.05 |
하노이의 탑 (1) | 2019.02.13 |
최근에 달린 댓글 최근에 달린 댓글