Programmers [Programmers] [1차] 뉴스 클러스터링 문제 - (javascript) - 728x90 문제 이름 : [1차] 뉴스 클러스터링 문제 <<< 문제 내용 >>> function solution(str1, str2) { let answer = 0; // toLowerCase로 소문자로 만든 후 배열로변경 str1 = str1.toLowerCase().split(''); str2 = str2.toLowerCase().split(''); let temp1 = []; let temp2 = []; // str들 2개씩 자른 후, 영어 소문자면 temp에 저장 const getStr = (arr, temp) => { arr.map((el, i) => { let check = arr.slice(i, i+2).join(''); if(check.match(/[a-z]{2}/)) temp.push(check); }); } getStr(str1, temp1); getStr(str2, temp2); // all은 전체 집합 수, interSection은 교집합 // 후에 union은 합집합 let all = temp1.length+temp2.length; let interSection = []; // 2개씩 자른 값이 옆의 2개씩 자른 값에 있다면 // 중복을 방지하기 위해 splice를 이용해 제거하기 // teseCase 5, 9, 10, 11 이 중복 문제 때문임 for(let i of temp1){ if(temp2.includes(i)) { interSection.push(i); let check = temp2.indexOf(i); temp2.splice(check,1) } } let interLen = interSection.length; let unionLen = all - interLen; return answer = isNaN(interLen/unionLen) ? 65536 : Math.floor(interLen/unionLen*65536); } * 전체 코드 자체는 무난하게 작성하였지만, 중복을 고려하지 못해서 고전했다. 이런 구현 문제는 꼼꼼함이 중요한 것 같지만 테스트케이스를 떠올리는게 시간소비가 크다. 어떻게 해야 한번에 꼼꼼하게 처리할 수 있을지가 주된 고민이다.. 도움이 되셨다면 공감 부탁드립니다. 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기MoveRoad's Factory 저작자표시 (새창열림) Contents 당신이 좋아할만한 콘텐츠 [Programmers] [3차] 압축 문제 - (javascript) 2022.01.25 [Programmers] 수식 최대화 문제 - (javascript) 2022.01.25 [Programmers] 메뉴 리뉴얼 문제 - (javascript) 2022.01.24 [Programmers] 방문 길이 문제 - (javascript) 2022.01.22 댓글 0 + 이전 댓글 더보기