기술 블로그

뉴스 클러스터링 본문

알고리즘 문제/Programmers

뉴스 클러스터링

parkit 2019. 5. 11. 01:32
728x90
반응형



https://www.welcomekakao.com/learn/courses/30/lessons/17677?language=cpp



map.count(string)이랑 map[string] 구분 못 해서, 결국 구글링했다.


나는 위의 2개가 같은 것(같은 개념)인 줄 알았다.






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <deque>
#include <list>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
#include <math.h>
#include <algorithm>
#include <map>
#include <set>
 
#pragma warning(disable:4996)  
#pragma comment(linker, "/STACK:336777216")
 
using namespace std;
 
bool chk(char a, char b)
{
    if ('A' <= a && a <= 'Z' && 'A' <= b && b <= 'Z'return true;
    return false;
}
 
int solution(string str1, string str2) 
{
    map<stringint> ms, mc, all;
 
    for (int i = 0; i < str1.length(); i++)
        if ('a' <= str1.at(i) && str1.at(i) <= 'z')
            str1.at(i) = toupper(str1.at(i));
 
    for (int i = 0; i < str2.length(); i++)
        if ('a' <= str2.at(i) && str2.at(i) <= 'z')
            str2.at(i) = toupper(str2.at(i));
 
    for (int i = 0; i < str1.length() - 1; i++)
        if (chk(str1.at(i), str1.at(i + 1)))
        {
            string temp = "";
 
            temp += str1.at(i);
            temp += str1.at(i + 1);
 
            if (ms[temp] >= 1++ms[temp];
 
            else ms[temp] = 1;
 
            all[temp] = 0;
        }
 
    for (int i = 0; i < str2.length() - 1; i++)
        if (chk(str2.at(i), str2.at(i + 1)))
        {
            string temp = "";
 
            temp += str2.at(i);
            temp += str2.at(i + 1);
 
            if (mc[temp] >= 1++mc[temp];
            else mc[temp] = 1;
 
            all[temp] = 0;
        }
 
    auto itr = all.begin();
 
    int child = 0, parent = 0;
 
    while (itr != all.end())
    {
        child += min(ms[itr->first], mc[itr->first]);
        parent += max(ms[itr->first], mc[itr->first]);
 
        ++itr;
    }
 
    if (child + parent == 0) child = parent = 1;
 
    return (int)(65536 * ((double)child / parent));
}
cs













728x90
반응형

'알고리즘 문제 > Programmers' 카테고리의 다른 글

가장 먼 노드  (0) 2019.05.11
압축  (0) 2019.05.11
이상한 문자 만들기  (0) 2019.05.05
단어 변환  (0) 2019.05.03
소수 찾기  (0) 2019.05.02