개발/algorithm
[프로그래머스][level2] [1차] 뉴스 클러스터링 - python
zzi_on2
2022. 4. 11. 21:13
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/17677
코딩테스트 연습 - [1차] 뉴스 클러스터링
뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브
programmers.co.kr
풀이
- defaultdict 사용해서 풀이
from collections import defaultdict
def solution(str1, str2):
# 대문자로 통일
str1 = str1.upper()
str2 = str2.upper()
# 원소별 개수 저장
x = defaultdict(int)
y = defaultdict(int)
# 교집합 개수
inter = 0
# 합집합 개수
union = 0
for i in range(0, len(str1)-1):
# 두 글자씩 끊어서 공백 제거 후
s1 = str1[i:i+2]
s1 = s1.replace(" ", "")
# 길이가 2이고 영어로만 구성되어 있으면
if len(s1) == 2 and s1.isalpha() :
# value + 1
x[(str1[i:i+2])] += 1
# 합집합 개수 + 1
union += 1
for i in range(0, len(str2)-1) :
s2 = str2[i:i+2]
if len(s2) == 2 and s2.isalpha() :
y[str2[i:i+2]] += 1
union += 1
# x의 원소들에 대해
for i in x :
# y에도 존재하는 원소이면, 즉 교집합이면
if i in y:
# 더 작은 값 교집합의 개수에 더하기
inter += min(x[i],y[i])
# 합집합에서 교집합 제거
union -= inter
# 합집합 0 이면
if union == 0 :
return 65536
return int(inter/union * 65536)