문제
https://programmers.co.kr/learn/courses/30/lessons/17677
코딩테스트 연습 - [1차] 뉴스 클러스터링
뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브
programmers.co.kr
코드
def solution(str1, str2):
# str1,str2 문자만 2글자씩 뽑기
arr_str1, arr_str2 = [], []
for i in range(len(list(str1))-1):
if str1[i:i+2].isalpha():
arr_str1.append(str1[i:i+2].lower())
for i in range(len(list(str2))-1):
if str2[i:i+2].isalpha():
arr_str2.append(str2[i:i+2].lower())
# 합집합, 교집합의 개수 구하기
intersection = 0
for i in arr_str1:
if i in arr_str2:
intersection += 1
union = len(arr_str1 + arr_str2) - intersection
# 유사도 값 구하기
if union == 0:
return 65536
else:
return int(intersection/union*65536)
def solution(str1, str2):
# str1,str2 문자만 2글자씩 뽑기
arr_str1, arr_str2 = [], []
for i in range(len(list(str1))-1):
if str1[i:i+2].isalpha():
arr_str1.append(str1[i:i+2].lower())
for i in range(len(list(str2))-1):
if str2[i:i+2].isalpha():
arr_str2.append(str2[i:i+2].lower())
# 교집합, 합집합 개수 구하기
intersection = 0
for i in arr_str2:
if i in arr_str1:
intersection += 1
arr_str1.remove(i)
union = len(arr_str1 + arr_str2)
# 유사도 값 구하기
if union == 0:
return 65536
else:
return int(intersection/union*65536)
union = arr_str1 + arr_str2 - intersection 이므로
arr_str1에서 intersection인 부분을 지워 저장 -> union = arr_str1 + arr_str2
intersection = 0
for i in arr_str2:
if i in arr_str1:
intersection += 1
arr_str1.remove(i)
위 코드는 아래와 같이도 바꿔줄 수 있다.
intersection = len([arr_str1.remove(x) for x in arr_str2 if x in arr_str1])
'⏳ 알고리즘 > python 알고리즘 문제 풀이' 카테고리의 다른 글
리트코드 - 19.Remove Nth Node From End of List (0) | 2021.08.29 |
---|---|
프로그래머스 - LV3. 베스트앨범 (0) | 2021.06.15 |
프로그래머스 - LV2. 예상 대진표(2017 팁스타운) (0) | 2021.06.11 |
프로그래머스 - LV2. 오픈채팅방(카카오 2019 블라인드 채용) (0) | 2021.06.07 |
프로그래머스 - LV1. 신규 아이디 추천(카카오 2021 블라인드 채용) (0) | 2021.06.07 |