취준생의 코딩테스트 연습기

[프로그래머스] [1차] 뉴스 클러스터링 / 파이썬(python) 본문

코딩테스트/프로그래머스

[프로그래머스] [1차] 뉴스 클러스터링 / 파이썬(python)

Jiwon_C 2021. 5. 24. 23:48

# 문제 링크

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

 

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

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

programmers.co.kr

# Soultion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import math
def solution(str1, str2):
    answer = 0
    arr1 = []
    arr2 = []
    for i in range(0,len(str1)-1):
        tmp = str1[i:i+2]
        if tmp.isalpha(): # 문자열만 취급
            arr1.append(tmp.lower()) #소문자로 변경하여 저장
    for i in range(0,len(str2)-1):
        tmp = str2[i:i+2]
        if tmp.isalpha(): # 문자열만 취급
            arr2.append(tmp.lower()) #소문자로 변경하여 저장
            
    if len(arr2)==0 and len(arr1)==0# 둘다 공집합일경우
        answer = 1
    else:
        cnt = 0
        for i in arr1:
            if i in arr2:
                cnt+=1 # 교집합
                arr2.remove(i)
        answer = cnt/(len(arr1)+len(arr2))
    return math.floor(answer*65536)
cs
 

6~13. 각 문자열을 2글자씩 끊은다음, 문자열로만 이루어져있으면 소문자로 변경하여 저장

15. 둘다 공집합인 경우 자카드 유사도는 1이므로 따로 처리해준다.

18. 교집합의 개수를 구하기위한 변수

19. 2글자씩 끊어진 문자열을 한개씩 비교하여 교집합의 개수를 구하고, 제거해준다.

Comments