Python/CoTe
[programmers] 뉴스 클러스터링 - Counter
joannekim0420
2022. 3. 12. 16:34
728x90
https://programmers.co.kr/learn/courses/30/lessons/17677#
코딩테스트 연습 - [1차] 뉴스 클러스터링
뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브
programmers.co.kr
첫 코드
from collections import Counter
def solution(str1, str2):
string1, string2 = [] ,[]
string = ['a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z']
for i in range(len(str1)-1):
if str1[i].lower() in string and str1[i+1].lower() in string:
string1.append(str1[i].lower()+str1[i+1].lower())
for i in range(len(str2)-1):
if str2[i].lower() in string and str2[i+1].lower() in string:
string2.append(str2[i].lower()+str2[i+1].lower())
inter = set(string1)&set(string2)
untion = set(string2+string1)
if len(inter) == 0 and len(union) == 0:
return 1*65536
else:
return int((len(inter)/len(union))*65536)
집합으로는 문제에 나와 있는 다중집합 허용 조건을 만족하지 못한다.
코드를 이리저리 수정해보아도 테스트 케이스는 통과하지만 제출 후 실패하는 케이스들이 많다.
중복되는 요소에 대해서는 고유번호를 추가적으로 더 붙이는 방법도 생각했지만 이것도 실패..
수정 후 코드
집합 set 이 아닌 Counter 사용
from collections import Counter
def solution(str1, str2):
string1, string2 = [] ,[]
string = ['a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z']
for i in range(len(str1)-1):
if str1[i].lower() in string and str1[i+1].lower() in string:
string1.append(str1[i].lower()+str1[i+1].lower())
for i in range(len(str2)-1):
if str2[i].lower() in string and str2[i+1].lower() in string:
string2.append(str2[i].lower()+str2[i+1].lower())
inter = list((Counter(string1) & Counter(string2)).elements())
union = list((Counter(string1) | Counter(string2)).elements())
if len(inter) == 0 and len(union) == 0:
return 1*65536
else:
return int((len(inter)/len(union))*65536)
Counter 에 사용한 건 이번이 처음!
https://dongdongfather.tistory.com/70
[파이썬 기초] Counter를 이용한 항목 계산
파이썬에서 항목의 개수를 셀때 사용하는 클래스로 Counter라는게 있다. 리스트나 셋을 인자로 넘기면 각 항목을 키로 해서 개수를 알려준다. 기본사용법은 이렇다. >>> from collections import Counter >>>
dongdongfather.tistory.com
의 글을 참고했다.