Algorithm/boj

[파이썬] 1501 단어 읽기

takeU 2023. 1. 8. 15:17
반응형
from functools import reduce
d = {}

def sort_word(word):
    if len(word) == 1:
        return word
    return word[0] + word[-1] + ''.join(sorted(word[1:-1]))

n = int(input())
for _ in range(n):
    word = sort_word(input())
    d[word] = d.get(word, 0) + 1

for _ in range(int(input())):
    sentence = input().split()
    li = []
    for s in sentence:
        word = sort_word(s)
        li.append(d[word] if word in d else 0)
    print(reduce(lambda acc, cur: acc * cur, li, 1))

1. 단어의 앞 + 뒤 + 나머지를 정렬해서 리턴해주는 함수 `sort_word` 생성 / 이 때 단어가 한 글자인 경우는 그대로 리턴

2. 사전에 있는 단어를 `sort_word` 한 뒤 딕셔너리에 저장

3. 문장을 쪼개 리듀스로 딕셔너리에서 일치하는 개수를 카운트해 곱해줌

4. 프린트