Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] 2018 카카오 BLIND RECRUITMENT- 뉴스 클러스터링 본문
728x90
programmers.co.kr/learn/courses/30/lessons/17677#
코딩테스트 연습 - [1차] 뉴스 클러스터링
뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브
programmers.co.kr
[ 알고리즘 ]
구현
[문제 접근]
다중 집합에 대해 확장할 수 있다는 조건으로,
단순히 파이썬의 내장 함수 set을 사용하여 교집합과 합집합을 구할 수 있는 문제가 아니었다.
또한 영문자외의 다른 문자뒤나, 앞에 오는 문자들은 함수에 들어가지 않는다는 점을 고려해야했다.
입력 : AA_bb_aa_AA,BBB
출력 : 13107
이 반례가 오류를 고치는데에 도움이 되었다.
쉬운 문제 같아서 빠르게 푸느라 코드가 잘 정리되진 않았음
[코드]
import math
def solution(str1, str2):
answer = 0
str1=str1.lower()
str2=str2.lower()
if len(str1)==0 or len(str2)==0 or str1==str2:
return 65536
List1=[]
for i in range(len(str1)-1):
if str1[i].isalpha() and str1[i+1].isalpha():
List1.append(str1[i:i+2])
List2=[]
for i in range(len(str2)-1):
if str2[i].isalpha() and str2[i+1].isalpha():
List2.append(str2[i:i+2])
set1=set(List1)
set2=set(List2)
cnt1=0
cnt2=0
# 교집합
sub=set1&set2
for i in sub: # 중복확인
cnt1+=min(List1.count(i),List2.count(i))
# 합집합
for i in List1:
if i not in sub:
cnt2+=1
for i in List2:
if i not in sub:
cnt2+=1
for i in sub:
cnt2+=max(List1.count(i),List2.count(i))
if cnt2==0:
return 65536
answer=math.floor((cnt1/cnt2)*65536)
return answer
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 2018 카카오 BLIND RECRUITMENT - 방금 그 곡 (0) | 2021.02.24 |
---|---|
[Python] 2019 카카오 BLIND RECRUITMENT - 오픈 채팅방 (0) | 2021.02.24 |
[Python] 2018 카카오 BLIND RECRUITMENT - 파일명 정렬 (0) | 2021.02.22 |
[Python] 2020 카카오 인턴 기출 - 수식 최대화 (0) | 2021.02.22 |
[Python] 2021 카카오 BLIND RECRUITMENT - 메뉴 리뉴얼 (0) | 2021.02.20 |
Comments