-
[프로그래머스] [1차] 뉴스 클러스터링 - Java공부/프로그래머스 2024. 7. 15. 22:32728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17677
프로그래머스 [1차] 뉴스 클러스터링 자바 풀이
난이도: Lv2
풀이
알파벳으로만 이루어져 있는 원소를 뽑아내어 list에 저장한다.
그 후 교집합, 합집합을 찾는다.
원소가 없는 경우 1로 지정하고, 있는 경우 교집합/합집합을 하여 자카드 유사도를 구한다.
코드
import java.util.ArrayList; import java.util.Collections; class Solution { public int solution(String str1, String str2) { int answer = 0; str1=str1.toLowerCase(); str2=str2.toLowerCase(); ArrayList<String> list1=new ArrayList<>(); ArrayList<String> list2 = new ArrayList<>(); ArrayList<String> union = new ArrayList<>(); ArrayList<String> intersection = new ArrayList<>(); 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)){ String str=Character.toString(a)+Character.toString(b); list1.add(str); } } 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)){ String str=Character.toString(a)+Character.toString(b); list2.add(str); } } Collections.sort(list1); Collections.sort(list2); for(String s: list1){ if(list2.remove(s)){ intersection.add(s); } union.add(s); } for(String s: list2){ union.add(s); } double intersectionSize = intersection.size(); double unionSize = union.size(); double jakard=0; if(unionSize==0){ jakard=1; }else{ jakard=intersectionSize/unionSize; } answer = (int) (jakard*65536); return answer; } }
728x90반응형'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [3차] 압축 - Java (0) 2024.07.31 [프로그래머스] k진수에서 소수 개수 구하기 - Java (0) 2024.07.30 [프로그래머스] 피로도 - Java (0) 2024.07.05 [프로그래머스] 프로세스 - Java (0) 2024.07.04 [프로그래머스] 튜플 - Java (0) 2024.07.03