-
[2018 1차 KAKAO] 뉴스 클러스터링Study/Coding Test 2021. 10. 10. 14:53
https://programmers.co.kr/learn/courses/30/lessons/17677
코딩테스트 연습 - [1차] 뉴스 클러스터링
뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브
programmers.co.kr
벡터의 집합 연산 (합집합, 교집합)이 필요했던 문제.
#include <string> #include <vector> #include <iostream> #include <algorithm> using namespace std; bool isAlphabet(char c){ return (c>='a' && c<='z') || (c>='A' && c<='Z'); } int solution(string str1, string str2) { vector<string> str1_vec; vector<string> str2_vec; for(int i=0; i<str1.size()-1; i++){ string temp = ""; if(isAlphabet(str1[i]) && isAlphabet(str1[i+1])){ temp += tolower(str1[i]); temp += tolower(str1[i+1]); str1_vec.push_back(temp); } } for(int i=0; i<str2.size()-1; i++){ string temp = ""; if(isAlphabet(str2[i]) && isAlphabet(str2[i+1])){ temp += tolower(str2[i]); temp += tolower(str2[i+1]); str2_vec.push_back(temp); } } sort(str1_vec.begin(), str1_vec.end()); sort(str2_vec.begin(), str2_vec.end()); vector<string> union_vec(str1_vec.size() + str2_vec.size()); auto iter = set_union(str1_vec.begin(), str1_vec.end(), str2_vec.begin(), str2_vec.end(), union_vec.begin()); union_vec.resize(iter - union_vec.begin()); vector<string> intersec_vec(str1_vec.size() + str2_vec.size()); iter = set_intersection(str1_vec.begin(), str1_vec.end(), str2_vec.begin(), str2_vec.end(), intersec_vec.begin()); intersec_vec.resize(iter - intersec_vec.begin()); if(union_vec.size() == 0){ return 65536; } return (double)intersec_vec.size() / (double)union_vec.size() * 65536; }
'Study > Coding Test' 카테고리의 다른 글
[2018 1차 KAKAO] 프렌즈4블록 (0) 2021.10.11 [백준] 미세먼지 안녕! (0) 2021.10.11 [2018 1차 KAKAO] 셔틀버스 (0) 2021.10.08 [2018 1차 KAKAO] 캐시 (0) 2021.10.08 [2018 1차 KAKAO] 다트 게임 (0) 2021.10.07