새소식

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); }

* 전체 코드 자체는 무난하게 작성하였지만, 중복을 고려하지 못해서 고전했다.

이런 구현 문제는 꼼꼼함이 중요한 것 같지만 테스트케이스를 떠올리는게 시간소비가 크다.

 

어떻게 해야 한번에 꼼꼼하게 처리할 수 있을지가 주된 고민이다..

 

 

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.