본문 바로가기

알고리즘

프로그래머스 - 뉴스 클러스터링


public int solution(String str1, String str2) {
    List<String> multiSet1 = new ArrayList<>();
    List<String> multiSet2 = new ArrayList<>();
    List<String> intersection = new ArrayList<>();
    List<String> union = new ArrayList<>();

    str1 = str1.toUpperCase();
    str2 = str2.toUpperCase();

    for (int i = 0; i < str1.length() - 1; i++) {
        char a = str1.charAt(i);
        char b = str1.charAt(i+1);

        if (Character.isLetter(a) && Character.isLetter(b)) {
            multiSet1.add(Character.toString(a) + Character.toString(b));
        }
    }

    for (int i = 0; i < str2.length() - 1; i++) {
        char a = str2.charAt(i);
        char b = str2.charAt(i+1);

        if (Character.isLetter(a) && Character.isLetter(b)) {
            multiSet2.add(Character.toString(a) + Character.toString(b));
        }
    }

    Collections.sort(multiSet1);
    Collections.sort(multiSet2);

    for (String s : multiSet1) {
        if (multiSet2.remove(s)) {
            intersection.add(s);
        }

        union.add(s);
    }

    for (String s : multiSet2) {
        union.add(s);
    }

    double jakad = 1;
    if (union.size() > 0) {
        jakad = (double) intersection.size() / union.size();
    }

    return (int) (jakad * 65536);
}

'알고리즘' 카테고리의 다른 글

Priority Queue(우선순위 큐)  (0) 2022.02.14
Binary Search Tree(이진 탐색 트리)  (0) 2022.02.14
letCode - Roman to Integer  (0) 2022.02.05
letCode - Longest Palindromic Substring ( 1차 )  (0) 2022.02.04
letCode - Add Two Numbers  (0) 2022.02.04