class Solution:
def distinctNames(self, ideas: List[str]) -> int:
ans = 0
heads = {chr(ord('a')+i) : [] for i in range(26)}
chars = [chr(ord('a')+i) for i in range(26)]
for idea in ideas:
heads[idea[0]].append(idea[1:])
for i in range(25):
for j in range(i+1, 26):
x, y = set(heads[chars[i]]), set(heads[chars[j]])
no = len(x & y)
ans += 2 * (len(x) - no) * (len(y) - no)
return ans
처음엔 좀 어려운 문제인가? 하고 봤는데
어떻게 고민하다보니 풀 수 있었음.
처음에는 head(0)에 대한 tail(1부터)들의 모임도 생각하고,
tail에 대한 head들의 모임도 생각했는데 후자는 숫자가 너무 커지더라.
댓글 0