Jam's story
[프로그래머스] 뉴스 클러스터링 본문
- 대문자와 소문자의 차이는 무시하니까 모두 다 대문자로 변환
- 조합들을 넣을 s1, s2 ArrayList 선언
- 교집합과 합집합을 넣을 ArrayList 선언
- for문으로 해당인덱스랑 그 다음인덱스를 가져와서 문자인지 확인하고 . 문자라면 둘을 합해서 s1, s2에 넣기
- 정렬을 해준후에
- for문으로 s1을 먼저 돌린 담에 s1와 s2를 비교하면서 있다면, s2에서 s1의 공통부분을 지운담에 교집합 집합에 넣어주고
- 없다면 합집합에 넣어준다 .
- s2를 돌면서 남은 것을 합집합에 넣어준다. (겹친거는 이미 지워졌으니 )
- zacard 구하기
- union사이즈- >분모가 0이면, 1 반환
import java.util.*;
class Solution {
public int solution(String str1, String str2) {
str1 = str1.toUpperCase();
str2 = str2.toUpperCase();
ArrayList<String> s1 = new ArrayList<>();
ArrayList<String> s2 = 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);
s1.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)) {
s2.add(Character.toString(a) + Character.toString(b));
}
}
Collections.sort(s1);
Collections.sort(s2);
for(String s : s1) {
if(s2.remove(s)) {
intersection.add(s);
}
union.add(s);
}
for(String s : s2) {
union.add(s);
}
double a = intersection.size();
double b = union.size();
double jakard = 0;
if(union.size() == 0)
jakard = 1;
else
jakard = (double) intersection.size() / (double) union.size();
return (int) (jakard * 65536);
}
}
- 대문자와 소문자의 차이는 무시하니까 모두 다 대문자로 변환
- 두개씩 짝지은 조합들을 넣을 s1, s2 ArrayList 선언
- 교집합과 합집합을 넣을 ArrayList 선언
- str1, str2를 susstring으로 자른담에 유효성검사를 하고 통과한다면 s1, s2에 담기
- for문으로 s1을 먼저 돌린 담에 s1와 s2를 비교하면서 있다면, s2에서 s1의 공통부분을 지운담에 교집합 집합에 넣어주고
- 없다면 합집합에 넣어준다 .
- s2를 돌면서 남은 것을 합집합에 넣어준다. (겹친거는 이미 지워졌으니 )
- zacard 구하기
- union사이즈- >분모가 0이면, 1 반환
import java.util.*;
class Solution {
public int solution(String str1, String str2) {
str1 = str1.toUpperCase();
str2 = str2.toUpperCase();
ArrayList<String> s1 = new ArrayList<>();
ArrayList<String> s2 = new ArrayList<>();
ArrayList<String> union = new ArrayList<>();
ArrayList<String> intersection = new ArrayList<>();
//String pattern="[A-Z][A-Z]";
String pattern="[A-Z]*$"; // *$ ~만 이라는 뜻
for(int i = 0; i < str1.length()-1; i++) {
String sub=str1.substring(i,i+2);
if(sub.matches(pattern)) {
s1.add(sub);
}
}
for(int i = 0; i < str2.length()-1; i++) {
String sub=str2.substring(i,i+2);
if(sub.matches(pattern)) {
s2.add(sub);
}
}
/*
for(int i=0; i<s1.size(); i++){
for(int j=0; j<s2.size(); j++){
if(s1.get(i).equals(s2.get(j))){
intersection.add(s2.get(j));
union.add(s2.get(j));
s2.remove(j);
}
}
insersection.add(s1.get(i));
}*/
for(String s : s1) {
if(s2.remove(s)) {
intersection.add(s);
}
union.add(s);
}
for(String s : s2) {
union.add(s);
}
double a = intersection.size();
double b = union.size();
double jakard = 0;
if(union.size() == 0)
jakard = 1;
else
jakard = (double) intersection.size() / (double) union.size();
return (int) (jakard * 65536);
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 서울에서 김서방 찾기 (0) | 2022.08.04 |
---|---|
[프로그래머스] 문자열 다루기 기본 (0) | 2022.08.03 |
[프로그래머스] 짝지어 제거하기 (0) | 2022.07.21 |
[프로그래머스] 더맵게 (0) | 2022.07.18 |
[프로그래머스] 오픈채팅방 (0) | 2022.07.14 |
Comments