알고리즘 - [1차] 뉴스 클러스터링

HoJeong Im·2021년 9월 22일
0

Break_Algo

목록 보기
13/46

문제

  • 링크

  • 기본적인 구현 문제

  • 문제를 이해하고 정확하게 작성하는데 오랜 시간이 걸리고, 실수가 잦음 ㅠㅠ

코드

function solution(str1, str2) {
    var answer = 0;
    const regex = new RegExp(/^[a-z]+$/, 'i');
    const makeEntity = (str1, str2) => {
        str1 = str1.toUpperCase();
        str2 = str2.toUpperCase();
        let arr1 = [], arr2 = [];
        for(let i = 0; i < str1.length-1 ; i++){
            let test = str1.substring(i,i+2);
            if(regex.test(test)){
                arr1.push(test);    
            }
        }
        for(let i = 0; i < str2.length-1 ; i++){
            
            let test = str2.substring(i,i+2);
            
            if(regex.test(test)){
                arr2.push(test);    
            }  
        }
        
       // arr1 = [1,1,2,2,3]
       // arr2 = [1,2,2,4,5]
        
        if(str1 === str2){
            return 65536
        }
        
        
        let obj = {};
        
        let obj2 = {};
        let obj3 = {};
        
        let number = 0; 
        arr1.forEach((e)=>{
           if(!obj[obj2[e]+'-'+e]){
              obj2[e] = 1;
              obj[obj2[e]+'-'+e] = 1; 
           }
           else {
              obj2[e]++;
              obj[obj2[e]+'-'+e]=1;
              
           }
        });
        //console.log(obj, obj2, obj3)
        arr2.forEach((e)=>{
           if(!obj[obj3[e]+'-'+e]){
              obj3[e] = 1;
              if(obj[obj3[e]+'-'+e]){
                  obj[obj3[e]+'-'+e]++;
              }
               else {
                   obj[obj3[e]+'-'+e] = 1;
               }
               
           }
           else {
              obj3[e]++;
              if(obj[obj3[e]+'-'+e]){
                  obj[obj3[e]+'-'+e]++;
              }
               else {
                    obj[obj3[e]+'-'+e]=1;     
               }
           }
        });
        
        //console.log(obj, obj2, obj3)
        
        let arr11 = Object.entries(obj);
        let len2 = arr11.filter(([key, value])=>{
            return value >= 2;                     
        }).length
        
        return Math.floor((len2 / arr11.length) * 65536);

    }
    
    return makeEntity(str1, str2);
    
    

}

회고

  • 정규 표현식, 기본 JS 문법에 익숙해지고 정확하게 사용할 수 있도록 꾸준히 학습하자
profile
꾸준함이 제일 빠른 길이었다

0개의 댓글