https://programmers.co.kr/learn/courses/30/lessons/17677
function solution(str1, str2) {
var answer = 0;
var arr1 = [];
var arr2 = [];
var regEx = /^[a-zA-Z]+$/;
// 1. 2글자씩 끊어서 다중집합 구하기 - 영문만 고려, 대소문자 무시
for(var i=0; i<str1.length-1; i++){
var subStr = str1.toLowerCase().substring(i, i+2);
if(regEx.test(subStr)){
arr1.push(subStr);
}
}
for(var j=0; j<str2.length-1; j++){
var subStr = str2.toLowerCase().substring(j, j+2);
if(regEx.test(subStr)){
arr2.push(subStr);
}
}
// 2. 합집합, 교집합 구하기
var union = [] // 중복포함, 합집합 배열 (multi set)
var intersect = [] // 중복포함, 교집합 배열
for (var i = 0; i < arr2.length; i++) {
if (arr1.indexOf(arr2[i]) >= 0) {
intersect.push(arr1.splice(arr1.indexOf(arr2[i]), 1)) //***교집합
}
union.push(arr2[i]) //***합집합
}
for (var i = 0; i < arr1.length; i++) { // ***합집합에 arr1 차집합 넣어주기
union.push(arr1[i])
}
// 3. 유사도 구하기, 예외처리
if( union.length === 0 ){
answer = 65536;
}else{
answer = Math.floor((intersect.length / union.length) * 65536);
}
return answer;
}
js 합집합 교집합 차집합
교집합
let difference = arr1.filter(x => arr2.includes(x));
차집합
let difference = arr1.filter(x => !arr2.includes(x));
참고
1.https://zetawiki.com/wiki/JavaScript_%ED%95%A9%EC%A7%91%ED%95%A9,_%EA%B5%90%EC%A7%91%ED%95%A9,_%EC%B0%A8%EC%A7%91%ED%95%A9,_%EB%8C%80%EC%B9%AD%EC%B0%A8
2. https://88240.tistory.com/519 [shaking blog]
3. https://m.blog.naver.com/PostView.nhn?blogId=wj8606&logNo=221328024033&proxyReferer=https:%2F%2Fwww.google.com%2F