문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17677
핵심
from itertools import combinations
import re
def solution(str1, str2):
str1 = str1.lower()
str2 = str2.lower()
pattern = re.compile("[a-z]{2,}")
arr1 = list(map(lambda x: str1[x:x+2], range(0, len(str1) - 1)))
arr2 = list(map(lambda x: str2[x:x+2], range(0, len(str2) - 1)))
arr1 = list(filter(lambda x: pattern.match(x) != None, arr1))
arr2 = list(filter(lambda x: pattern.match(x) != None, arr2))
crossCount = countCrossValue(arr1, arr2.copy())
sumCount = len(arr1) + len(arr2) - crossCount
similarFactor = 1 if sumCount == 0 else crossCount / sumCount
return int(similarFactor * 65536)
def countCrossValue(arr1, arr2):
cross = []
for i in arr1:
if i in arr2:
arr2.remove(i)
cross.append(i)
return len(cross)