반응형
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. 프린트