https://www.welcomekakao.com/learn/courses/30/lessons/17677

 

코딩테스트 연습 - [1차] 뉴스 클러스터링

뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브��

www.welcomekakao.com

#include <iostream>
#include <algorithm>
#include <string>
#include <set>
#include <vector>

using namespace std;

multiset <string> preset(string s) {
    multiset <string> temp2;

    for (int i = 0; i < s.size()-1; i++)
    {
        char c = tolower(s[i]);
        char c2 = tolower(s[i + 1]);
        string temp = "";
        if (c >= 'a' && c <= 'z' && c2 >= 'a' && c2 <= 'z') {
            temp += c;
            temp += c2;
            temp2.insert(temp);
        }
    }

    return temp2;
}

int solution(string str1, string str2) {
    int answer = 65536;

    multiset<string> s1, s2;
    s1 = preset(str1);
    s2 = preset(str2);

    if (s1.size() == 0 && s2.size() == 0) {
        return answer;
    }

    int sunion = s1.size();
    int inter = 0;
    for (auto it = s2.begin(); it != s2.end(); it++)
    {
        auto it2 = find(s1.begin(), s1.end(), *it);
        if (it2 != s1.end()) {
            s1.erase(it2);
            inter++;
        }
        else {
            sunion++;
        }
    }

    answer = (int)((inter * 65536) / sunion);
    return answer;
}

+ Recent posts