해결 과정
다중 집합이라는 개념을 녹인 문제. 다음 두 글에 정리가 잘 되어 있다. 지난 번에 문자열 슬라이싱의 경우 index를 넘어도 되는 것을 알고 있었기에 적용해서 풀고, 문자열 함수를 여러 개 리마인드 할 수 있었던 문제였다. .isalpha() .lower()
나의 풀이
import math
def solution(str1, str2):
answer = 0
factor = 65536
a = []
b = []
for i in range(len(str1) - 1):
if str1[i:i + 2].isalpha():
a.append(str1[i:i + 2].lower())
for i in range(len(str2) - 1):
if str2[i:i + 2].isalpha():
b.append(str2[i:i + 2].lower())
if len(a) + len(b) == 0:
return factor
intersection = set(a) & set(b)
union = set(a) | set(b)
interSum = sum([min(a.count(i), b.count(i)) for i in intersection])
unionSum = sum([max(a.count(i), b.count(i)) for i in union])
answer = math.trunc(interSum / unionSum * factor)
return answer
다른 풀이
IDEA
'Coding Test > 문제 풀이' 카테고리의 다른 글
[문제 풀이] 체육복 (0) | 2022.02.16 |
---|---|
[문제 풀이] 순위 검색 (0) | 2022.02.09 |
[문제 풀이] 메뉴 리뉴얼 (0) | 2022.02.07 |
[문제 풀이] 괄호 변환 (0) | 2022.02.04 |
[문제 풀이] H-Index (0) | 2022.01.28 |