[Programmers] - 뉴스 클러스터링 (Level 2)
2018 KAKAO BLIND RECRUITMENT [1차]
LEVEL : 2
문제링크
str1 = 'handshake'
str2 = 'shake hands'
def solution(str1, str2):
import re
p = re.compile('[^a-zA-Z]')
#2글자씩 소문자로 묶고 영문자가 아닌것 제거
token1 = [str1[i:i+2].lower() for i in range(len(str1)-1) if not p.search(str1[i:i+2])]
token2 = [str2[i:i+2].lower() for i in range(len(str2)-1) if not p.search(str2[i:i+2])]
#중복 원소에 대한 교집합
intersect = 0
for i in set(token1):
if i in token2:
intersect += min(token1.count(i), token2.count(i))
#중복 원소에 대한 합집합
union = len(token1) + len(token2) - intersect
if union == 0:
return 65536
if intersect == 0:
return 0
else:
#자카드 유사도 계산 후 정답 출력 형식으로 변환
jakad = int(intersect/union*65536)
return jakad
solution(str1, str2)
65536
Comments