본문 바로가기
코딩 테스트/문제 풀기

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

by hazel_ 2021. 3. 30.

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

 

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

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

programmers.co.kr

 

교집합을 구할때 교집합에 속한 것은 한번 확인 후 없애야 함.

ex) list1={1,2,4,4,4} , list2={4,4,5,6,7,8,8}

안없애면 교집합이 3개가 나옴 (4,4,4)

없애면 교집합 2개 (4,4)

 

코드 중 str2_copy.__delitem__ 부분 확인

 

def solution(str1, str2):
    str1_array=[]
    str2_array=[]
    str1=str1.lower()
    str2=str2.lower()

    for i in range(len(str1)-1):
        if not str1[i].isalpha() or not str1[i+1].isalpha():
            continue
        str1_array.append(str1[i:i+2])
    for i in range(len(str2)-1):
        if not str2[i].isalpha() or not str2[i+1].isalpha():
            continue
        str2_array.append(str2[i:i+2])

    print(str1_array, str2_array)
    if len(str1_array)==0 and len(str2_array)==0:
        return 65536

    inter=0
    union=0

    str2_copy=[]
    for i in str2_array:
        str2_copy.append(i)

    for i in str1_array:
        if i in str2_copy:
            inter+=1
            str2_copy.__delitem__(str2_copy.index(i))

    union=len(str1_array)+len(str2_array)-inter
    print(inter, union)

    return int((inter/union)*65536)

댓글