말랑한 하루
[Programmers] 뉴스 클러스터링 (Lv 2, JavaScript) 본문
반응형
[ 학습 내용 ]
다중집합에서 차집합과 교집합의 개수에 관해 구할 때, 두 집합의 절대원소를 통해 알아낼 수 있다.
절대원소를 순회하며, 각 집합에서 원소의 개수를 판단하고, 두 원소 개수 값 중 작은값은 교집합, 큰값은 합집합으로 판별하여 문제를 해결한다.
- Set
const set = new Set([...ary1, ...ary2]);
Set, Map 활용도는 무궁무진하니 틈틈히 익혀두자
[ 소스 코드 ]
function solution(str1, str2) {
var answer = 0;
str1 = str1.toLowerCase().split("");
str2 = str2.toLowerCase().split("");
var reg = new RegExp(/[^a-z]/g, "");
const makeJacade = (str) => {
return str.map((fixed, index, origin) => {
if (index === 0) return;
return origin[index - 1] + fixed;
}).filter((item) => !reg.test(item) && item != undefined);
}
var jacade1 = makeJacade(str1);
var jacade2 = makeJacade(str2);
if (jacade1.length === 0 && jacade2.length === 0) return 65536;
const setJacade = new Set([...jacade1, ...jacade2]);
var inter = 0, union = 0;
setJacade.forEach((item) => {
const has1 = jacade1.filter(it => it === item).length;
const has2 = jacade2.filter(it => it === item).length;
inter += Math.min(has1, has2);
union += Math.max(has1, has2);
})
return parseInt(inter / union * 65536);
}
[ 코드 분석 ]
정규식을 통해 문자쌍을 정리한다. map의 특성으로 인해 undefined를 제거하는 요소도 추가되었다.
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Programmers] 콜라 문제 (Lv 1, Python) (0) | 2022.10.22 |
---|---|
[Programmers] 징검다리 (Lv 3, JavaScript) (0) | 2022.09.22 |
[Programmers] 튜플 (Lv 2, JavaScript) (0) | 2022.09.19 |
[Programmers] 캐시 (Lv 2, JavaScript) (0) | 2022.09.19 |
[Programmers] 불량 사용자 (Lv 3, JavaScript) (0) | 2022.07.20 |
Comments