Java
프로그래머스: [1차] 뉴스 클러스터링
Daeryuk Kim
2024. 3. 7. 16:40
import java.util.*;
class Solution {
public int solution(String str1, String str2) {
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
Map<String, Integer> map1 = new HashMap<>();
Map<String, Integer> map2 = new HashMap<>();
for (int i = 0; i < str1.length() - 1; i++) {
char first = str1.charAt(i);
char second = str1.charAt(i + 1);
if (Character.isLetter(first) && Character.isLetter(second)) {
map1.put(str1.substring(i, i + 2), map1.getOrDefault(str1.substring(i, i + 2), 0) + 1);
}
}
for (int i = 0; i < str2.length() - 1; i++) {
char first = str2.charAt(i);
char second = str2.charAt(i + 1);
if (Character.isLetter(first) && Character.isLetter(second)) {
map2.put(str2.substring(i, i + 2), map2.getOrDefault(str2.substring(i, i + 2), 0) + 1);
}
}
int intersection = 0;
int union = 0;
for (String key : map1.keySet()) {
if (map2.containsKey(key)) {
intersection += Math.min(map1.get(key), map2.get(key));
union += Math.max(map1.get(key), map2.get(key));
map2.remove(key);
} else {
union += map1.get(key);
}
}
for (String key : map2.keySet()) {
union += map2.get(key);
}
double jakard = 0;
if (union != 0) {
jakard = (double)intersection / union;
} else if (map1.size() == 0 && map2.size() == 0) {
jakard = 1;
}
return (int)(jakard * 65536);
}
public static void main(String[] args) {
String str1 = "FRANCE";
String str2 = "french";
Solution sol = new Solution();
System.out.println(sol.solution(str1, str2));
}
}