https://school.programmers.co.kr/learn/courses/30/lessons/17677?language=javascript
코드
function isAlpha(str) {
return /^[A-Za-z]+$/.test(str);
}
function getFragment(str) {
const result = [];
for (let i = 0; i < str.length - 1; i++) {
const fragment = str.slice(i, i + 2).toLowerCase();
if (!isAlpha(fragment)) continue;
result.push(fragment);
}
return result;
}
function solution(str1, str2) {
const str1Fragments = getFragment(str1);
const str2Fragments = getFragment(str2);
const set = new Set([...str1Fragments, ...str2Fragments]);
let intersection = 0;
let union = 0;
set.forEach((frag) => {
const cnt1 = str1Fragments.filter((value) => value === frag).length;
const cnt2 = str2Fragments.filter((value) => value === frag).length;
union += Math.max(cnt1, cnt2);
intersection += Math.min(cnt1, cnt2);
});
return union === 0 ? 65536 : Math.floor((intersection / union) * 65536);
}
'문제풀이 > 구현' 카테고리의 다른 글
[Python/파이썬] 소프티어 CPTI (0) | 2025.02.07 |
---|---|
[Python/파이썬] 백준 15683번 감시 (0) | 2025.01.07 |
[Python/파이썬] 백준 16960번 스위치와 램프 (0) | 2024.10.31 |
[Javascript/자바스크립트] 프로그래머스 최댓값과 최솟값 (0) | 2024.06.21 |
[Python/파이썬] 백준 2628번 종이자르기 (0) | 2024.05.13 |