[programmers] 뉴스클러스터링(2018 카카오 블라인드 채용)
resilient
·2021. 8. 30. 16:44
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/17677
코딩테스트 연습 - [1차] 뉴스 클러스터링
뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브
programmers.co.kr
- 이 문제는 카카오 코딩 테스트 1번 문제답게 문자열을 다루는 문제이다.
- 먼저 숫자 또한 기호를 제외한 알파벳 소문자, 대문자 만을 담아두는 리스트를 입력값 str1, str2 각각 2개를 만들어서 소문자, 대문자만 2개씩 끊어서 다중집합의 원소로 만들어준다.
- 그리고 str1_list 와 str2_list를 대문자 소문자 상관없이 비교해주기 위해 upper() 함수를 사용해서 전부 대문자로 바꿔준다.
- 그리고 Counter 라이브러리를 이용해서 각 원소와 원소의 개수를 반환해주는 str1_list_cnt와 str2_list_cnt를 만들어준다.
- Counter 함수를 사용한 str1_list_cnt 와 str2_list_cnt를 elements() 함수를 사용해서 교집합과 합집합을 각각 구해준다.
- 교집합의 개수가 0이고 합집합의 개수가 0 일 때는 1로 처리하므로 65536을 출력해주고,
그 외에는 교집합의 개수에서 합집합의 개수를 나눠서 65536을 곱해주면 된다.
from collections import Counter
str1 = 'FRANCE'
str2 = 'french'
str1_list = []
str2_list = []
cursor1 = 0
while cursor1 < len(str1) - 1:
temp = ''
for i in range(cursor1,cursor1+2):
if 65 <= ord(str1[i]) < 91 or 97 <= ord(str1[i]) < 123:
temp += str1[i]
if len(temp) < 2:
temp = ''
elif len(temp) == 2:
str1_list.append(temp)
temp = ''
cursor1 += 1
cursor2 = 0
while cursor2 < len(str2) - 1:
temp = ''
for i in range(cursor2,cursor2+2):
if 65 <= ord(str2[i]) < 91 or 97 <= ord(str2[i]) < 123:
temp += str2[i]
if len(temp) < 2:
temp = ''
elif len(temp) == 2:
str2_list.append(temp)
temp = ''
cursor2 += 1
for i in range(len(str1_list)):
str1_list[i] = str1_list[i].upper()
for i in range(len(str2_list)):
str2_list[i] = str2_list[i].upper()
str1_list_cnt = Counter(str1_list)
str2_list_cnt = Counter(str2_list)
intersec = list((str1_list_cnt & str2_list_cnt).elements())
union = list((str1_list_cnt | str2_list_cnt).elements())
if len(intersec) == 0 and len(union) == 0:
print(65536)
else:
print(int(len(intersec)/len(union)*65536))
반응형
'자료구조 & 알고리즘 > 프로그래머스(programmers)' 카테고리의 다른 글
[programmers] 보석 쇼핑 (2020 카카오 인턴십) (1) | 2021.09.03 |
---|---|
[programmers ] 캐시 (2018 카카오 블라인드 채용) (0) | 2021.09.01 |
[programmers] 크레인인형뽑기게임 (2019 카카오 개발자 겨울 인턴십) (0) | 2021.08.24 |
[programmers] 튜플 (2019 카카오 개발자 겨울 인턴십) (0) | 2021.08.23 |
[programmers] 위클리챌린지2주차/상호평가 (0) | 2021.08.20 |