from collections import Counter

def solution(str1, str2):
    lst_str1 = make_str_set(str1)
    lst_str2 = make_str_set(str2)

    if len(lst_str1)==0 and len(lst_str2)==0:
        return 65536

    len_inter = len(list((Counter(lst_str1) & Counter(lst_str2)).elements()))
    len_union =  len(lst_str1) + len(lst_str2) - len_inter

    return int(len_inter/len_union * 65536)


def make_str_set(str1):
    arr = []
    for i in range(len(str1)):
        s = str1[i:i+2]
        if (s.isalpha()) and len(s)==2:
            arr.append(str1[i:i+2].lower())
    return arr

생각해보기

  • 주어진 두 개의 문자열을 make_str_set()로 조건에 맞게 각각 새로운 리스트로 반환한다.
  • Counter는 논리 연산자 사용이 가능하기 때문에 이를 활용하면 간단하게 문제를 풀 수 있다.

+ 따끈한 최근 게시물