from collections import Counter
def solution(str1, str2):
answer = 0
# 소문자화
str1 = str1.lower()
str2 = str2.lower()
str1_set2 = setString2(str1)
str2_set2 = setString2(str2)
similer_score = similer_count(str1_set2, str2_set2)
if len(str1_set2) > 0 or len(str2_set2) > 0:
zakad = (similer_score /(sum_count(str1_set2, str2_set2))) * 65536
else:
return 65536
# 내림
return int(zakad)
# 합집합
def sum_count(str1, str2):
score = 0
str1_counter = Counter(str1)
str2_counter = Counter(str2)
for i in str1_counter:
# 겹칠때 큰 수 +
if i in str2_counter:
if str1_counter[i] <= str2_counter[i]:
score += str2_counter[i]
else:
score += str1_counter[i]
# 겹치지 않을때 +
else:
score += str1_counter[i]
for j in str2_counter:
# 겹치지 않을때 +
if j not in str1_counter:
score += str2_counter[j]
return score
# 교집합
def similer_count(str1, str2):
score = 0
str1_counter = Counter(str1)
str2_counter = Counter(str2)
for i in str1_counter:
if i in str2_counter:
if str1_counter[i] <= str2_counter[i]:
score += str1_counter[i]
else:
score += str2_counter[i]
return score
# 집합 생성
def setString2(a):
temp = []
for i in range(len(a)):
# 2개의 집합이면
if len(a[i:i+2]) ==2:
# 소문자 알파벳이면
if ('a' <= a[i:i+2][0] <= "z") & ('a' <= a[i:i+2][1] <= "z"):
temp.append(a[i:i+2])
return temp
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[파이썬][프로그래머스] Lv. 2 [1차] 캐시 (0) | 2022.08.28 |
---|---|
[파이썬][프로그래머스] Lv. 2 튜플 (0) | 2022.07.20 |
[파이썬][프로그래머스] Lv. 2 괄호 변환 (0) | 2022.07.09 |
[파이썬][프로그래머스] Lv. 1 [1차] 비밀지도 (0) | 2022.06.22 |
[파이썬][프로그래머스] Lv. 1 실패율 (0) | 2022.06.21 |
댓글