알고리즘/문제 [프로그래머스] 뉴스 클러스터링 - 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters static int solution(String str1, String str2) { str1 = str1.toUpperCase(); str2 = str2.toUpperCase(); ArrayList<String> al1 = new ArrayList<>(); ArrayList<String> al2 = new ArrayList<>(); for(int i=0; i<str1.length()-1; i++){ String temp = str1.substring(i, i+2); if(Pattern.matches("^[A-Z]*$", temp)){ al1.add(temp); } } for(int i=0; i<str2.length()-1; i++){ String temp = str2.substring(i, i+2); if(Pattern.matches("^[A-Z]*$", temp)){ al2.add(temp); } } int gyo = 0; int hab = al1.size() + al2.size(); for(int i=0; i<al1.size(); i++){ Loop1: for(int j=al2.size()-1; j>=0; j--){ if(al1.get(i).equals(al2.get(j))){ gyo++; al2.remove(j); break Loop1; } } } hab -= gyo; double temp = (hab != 0) ? (double)gyo/hab : 1; return (int)Math.floor(temp * 65536); } view raw KAKAO_NewsClustering.java hosted with ❤ by GitHub 일단 문제를 읽어보면 각 문자열을 연달아 2개의 문자씩 나눠서 집합을 구성한 다음 "ABCDE"의 경우 -> {"AB", "BC", "CD", "DE"} 두 문자열의 다중집합끼리의 자카드 유사도를 구하면 된다 자카드 유사도는 문제에서 알려준 것처럼 '교집합/합집합' 의 값이다 크게 보면 위의 예시처럼 집합을 만들면서 답을 구하는 과정에서 체크해야 할 사항은 2글자 중 한글자라도 알파벳이 아닌 경우 집합에 포함시키지 않는다 > 정규식으로 처리 입력으로 받은 문자열을 바로 알파벳이 아닌 문자를 삭제하면 안된다 ( aa1+aa2, AAAA12 경우를 손으로 해보면 앎 ) 대소문자는 구별하지 않는다 > 바로 대문자처리 교집합을 구하면서 교집합 처리된 원소 > 삭제or 사용플래그 처리 {"AA", "AA", "AA"} 와 {"AA", "AA", "AA", "AA", "AA"} 인 경우 문제 설명처럼교집합은 3 합집합이 5가 나와야 함. 그리고 합집합이 0인 경우 > 0으로 나누기가 불가능하고 교집합도 0이란 의미이므로 합집합의 값을 1로 설정 이후 출력방식에 맞게 조절했다 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기Time to lazy Contents 당신이 좋아할만한 콘텐츠 [BOJ/백준 - 10757] 큰 수 A + B 2022.06.21 [BOJ/백준 - 10250] ACM 호텔 2022.06.21 [프로그래머스] 신고 결과 받기 2022.06.17 [BOJ/백준 - 1105] 팔 2022.02.16 댓글 0 + 이전 댓글 더보기