πŸ€— [1μ°¨] λ‰΄μŠ€ ν΄λŸ¬μŠ€ν„°λ§

Jake_YoungΒ·2020λ…„ 9μ›” 2일
0

μ½”λ”© ν…ŒμŠ€νŠΈ, Coding Test

λͺ©λ‘ 보기
6/23
post-thumbnail

πŸ‘‰λ¬Έμ œ 링크


μ •λ‹΅ μ½”λ“œ 및 ν•΄μ„€

def solution(str1, str2):
    str11 = {}
    str22 = {}

    # 두 κ°œμ”© μ‚΄νŽ΄λ³΄λ©° dict ν˜•νƒœλ‘œ λ§Œλ“ λ‹€ {"word": count, ...}
    for i in range(len(str1)-1):
        if str1[i:i+2].isalpha():
            word = str1[i:i+2].lower()
            if str11.get(word):
                str11[word] += 1
            else:
                str11[word] = 1
    for i in range(len(str2)-1):
        if str2[i:i+2].isalpha():
            word = str2[i:i+2].lower()
            if str22.get(word):
                str22[word] += 1
            else:
                str22[word] = 1

    # ꡐ집합과 합집합에 ν•΄λ‹Ήν•˜λŠ” word 집합을 μ°ΎλŠ”λ‹€
    str11_keys = set(str11.keys())
    str22_keys = set(str22.keys())
    min_keys = str11_keys & str22_keys
    max_keys = str11_keys | str22_keys

    # μ„Έμ–΄μ€€λ‹€
    min_value = 0
    for key in min_keys:
        min_value += min(str11[key], str22[key])
    max_value = 0
    for key in max_keys:
        max_value += max((str11.get(key) or 0), (str22.get(key) or 0))

     # μ˜ˆμ™Έ 처리 ν›„, 닡을 κ΅¬ν•œλ‹€
    return 65536 if max_value == 0 else int(min_value/max_value*65536)
profile
μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ 파이썬 그리고 컴퓨터와 λ„€νŠΈμ›Œν¬

0개의 λŒ“κΈ€