배고픈 개발자 이야기
[2018 kakao blind] 뉴스클러스터링 본문
728x90
중복되는 뉴스를 편리하게 제공하기 위해 뉴스기사 제목의 자카드 유사도를 검사하는 문제
뉴스제목을 부분집합으로 만들어 (교집합/합집합) * 65536의 값을 구하는 문제입니다.
주의점
- 대소문자를 구분하지 않는다.
- 영어 소문자 이외의 단어가 들어간 부분집합은 제외한다.
- 둘 다 공집합인 경우는 자카드 유사도를 1로 정의한다 (나눠지지 않으므로)
- intersection, union을 파이썬 set함수로 구하면 중복 부분집합이 제거되므로 직접 구현한다.
위의 주의점만 신경쓰면 된다.
def solution(str1, str2):
answer = 0
sub_str1, sub_str2 = list(), list()
len_str1, len_str2 = len(str1), len(str2)
for i in range(len_str1 - 1):
a, b = str1[i].lower(), str1[i+1].lower()
if 96 < ord(a) < 123 and 96 < ord(b) < 123:
sub_str1.append(a + b) # 97~122
for i in range(len_str2 - 1):
a, b = str2[i].lower(), str2[i+1].lower()
if 96 < ord(a) < 123 and 96 < ord(b) < 123:
sub_str2.append(a + b) # 97~122
union, intersection = len(sub_str1)+len(sub_str2), 0
for sub_1 in sub_str1:
for sub_2 in sub_str2:
if sub_1 == sub_2:
intersection += 1
sub_str2.remove(sub_1)
break
union -= intersection
if not union:
return 65536
answer= int((intersection / union) * 65536)
return answer
'알고리즘 문제 > PROGRAMMERS' 카테고리의 다른 글
[2021 KAKAO BLIND] 신규 아이디 추천 (0) | 2021.10.07 |
---|---|
[2020 kakao blind] 괄호변환 (0) | 2021.08.12 |
[2021 카카오 인턴] 수식 최대화 (0) | 2021.08.07 |
[2018 kakao blind] 다트게임 (0) | 2021.08.01 |
[2018 kakao blind] 비밀지도 (0) | 2021.08.01 |
Comments