> 기초/코테 연습

TIL-2024.03.30 - 코테연습 - kakao -뉴스 클러스터링(2).programmers

Janku 2024. 3. 31. 10:55

 

 

 

URL:

https://school.programmers.co.kr/learn/courses/30/lessons/17677

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

// URL > https://school.programmers.co.kr/learn/courses/30/lessons/17677

const solution = (str1, str2) => {
    let result = 0;
    let min = 0;
    let max = 0;
    const newsClustering = (str) => {
        let temp = [];
        let strSplit = str.split("");
        for (let i = 0; i < strSplit.length - 1; i++) {
            let str = strSplit[i] + strSplit[i + 1];
            if (/^[A-Z]+$/.test(str)) {
                temp.push(str);
            }
        }
        return temp;

    };

    str1 = newsClustering(str1.toUpperCase());
    str2 = newsClustering(str2.toUpperCase());


    let set = new Set([ ...str1, ...str2 ]);
    console.log("set::: ", set);

    set.forEach(item => {
        const temp1 = str1.filter(i => i === item);
        const temp2 = str2.filter(i => i === item);
        min += Math.min(temp1.length, temp2.length);
        max += Math.max(temp1.length, temp2.length);
    });

    // 공집합인 경우
    if (min === 0 && max === 0) {
        return 65536;
    }

    result = Math.floor(min / max * 65536);

    return result;

};


console.log("result:: ", solution("FRANCE", "french")); //16384
console.log("result:: ", solution("handshake", "shake hands")); //65536
console.log("result:: ", solution("aa1+aa2", "AAAA12")); //43690
console.log("result:: ", solution("E=M*C^2", "E=M*C^2")); //65536