동캄의 코딩도장

프로그래머스 level2 [뉴스 클러스터링] 파이썬 본문

코테/프로그래머스

프로그래머스 level2 [뉴스 클러스터링] 파이썬

동 캄 2021. 12. 18. 20:55

https://programmers.co.kr/learn/courses/30/lessons/17677

 

코딩테스트 연습 - [1차] 뉴스 클러스터링

뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브

programmers.co.kr

#프로그래머스 [1차] 뉴스 클러스터링

def makepair(s):
    lst=[]
    for i in range(len(s)-1):
        if s[i].isalpha() and s[i+1].isalpha():
            lst.append(s[i]+s[i+1])
    return lst
def solution(str1, str2):
    answer = 0
    str1=makepair(str1.upper())
    str2=makepair(str2.upper())
    str1.sort()
    str2.sort()
    intersect=[]
    i=0
    j=0
    while str1 and str2 and i<len(str1) and j<len(str2):
        if str1[i]==str2[j]:
            intersect.append(str1[i])
            i+=1
            j+=1
        elif str1[i]>str2[j]:
            j+=1
        else:
            i+=1
    Union=str1+str2
    for i in range(len(intersect)):
        Union.pop(Union.index(intersect[i]))
    if len(Union)!=0:
        jac=len(intersect)/len(Union)
        answer=int(jac*65536)
        return answer    
    else:
        if str1==str2:
            return 65536

먼저, 각 문자열을 대문자로 변환하고, 두글자씩 알파벳으로 묶는다. (알파벳이 아니면 포함x)

그 후, intersect와 union을 구한다.