기본 콘텐츠로 건너뛰기

코딩 테스트 - 뉴스 클러스터링

package programmers;

import java.util.ArrayList;

public class 뉴스클러스터링_230107 {
    public static void main(String[] args) {
        뉴스클러스터링_230107 nws = new 뉴스클러스터링_230107();
       
        String str1 = "FRANCE";
        String str2 = "french";
        System.out.println(nws.solution(str1, str2));
    }

   
    public int solution(String str1, String str2) {
        int answer = 0;

        ArrayList<String> arr1 = new ArrayList<>();
        ArrayList<String> arr2 = new ArrayList<>();
       
        ArrayList<String> 교집합 = new ArrayList<>();
        ArrayList<String> 합집합 = new ArrayList<>();

        str1 = str1.toUpperCase();
        str2 = str2.toUpperCase(); //둘다 대문자로 바꿈

        for(int i = 0; i<str1.length()-1;i++){
           
            char first = str1.charAt(i);
            char second = str1.charAt(i+1);
            if(first >='A' && first <='Z' && second >='A' && second <='Z'){
                arr1.add(first +""+second);
            }
        }

        for(int i = 0; i<str2.length()-1;i++){
            char first = str2.charAt(i);
            char second = str2.charAt(i+1);
            if(first >='A' && first <='Z' && second >='A' && second <='Z'){
                arr2.add(first +""+second);
            }
        }

        //문자열 길이가 다른 경우 때문에  한번에 그거 하면 안됨 ㅠ

        for(String s : arr1){
            if(arr2.remove(s)){
                교집합.add(s);
            }
            합집합.add(s);
        }

        합집합.addAll(arr2);

        double 교집합길이 = 교집합.size();
        double 합집합길이 = 합집합.size();

        if(합집합길이 == 0){
            return 65536;
        }
        answer = (int)(교집합길이/합집합길이* 65536) ;

        return answer;
    }
}



이 문제 Stream으로 멋지게 푼 사람이 승리자임
나눈... 예로부터 내려온 방식으로 자르고 교집합 합집합 -> 처리 하였음...



댓글