N

(프로그래머스 JS KAKAO)뉴스 클러스터링 본문

프로그래머스 알고리즘/KAKAO

(프로그래머스 JS KAKAO)뉴스 클러스터링

naeunchan 2021. 5. 12. 16:08
728x90
반응형

programmers.co.kr/learn/courses/30/lessons/17677?language=javascript

 

코딩테스트 연습 - [1차] 뉴스 클러스터링

뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브

programmers.co.kr

function getString(str){
    const result = [];
    
    for(let i = 0; i < str.length; i++){
        result.push(str.substr(i, 2));
    }
    return result;
}

function isAlphabet(str){
    if(str[0] >= 'A' && str[0] <= 'Z' && str[1] >= 'A' && str[1] <= 'Z'){
        return true;
    }
    else{
        return false;
    }
}

function solution(str1, str2) {
    let answer = 0;
    const com1 = [];
    const com2 = [];
    let union = 0;
    let intersection = 0;
    
    getString(str1.toUpperCase()).forEach((e) => {
        if(isAlphabet(e)){
            com1.push(e);
        }
    });
    
    getString(str2.toUpperCase()).forEach((e) => {
        if(isAlphabet(e)){
            com2.push(e);
        }
    });
    
    union = com1.length + com2.length;
    
    if(com1.length >= com2.length){
        for(let i = 0; i < com2.length; i++){
            const index = com1.indexOf(com2[i]);
            
            if(index > -1){
                intersection++;
                com1.splice(index, 1);
            }
        }
    }
    else{
        for(let i = 0; i < com1.length; i++){
            const index = com2.indexOf(com1[i]);
            
            if(index > -1){
                intersection++;
                com2.splice(index, 1);
            }
        }
    }
    
    union -= intersection;
    
    return union === 0 ? 65536 : Math.floor((intersection / union) * 65536);
}
728x90
반응형