JavaScript_부분집합 확인

Eugenius1st·2022년 8월 30일
0

JavaScript_algorithm

목록 보기
4/21
post-thumbnail

JavaScript_부분집합 확인

문제

두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다.

풀이

  • function isSub를 만든후, 인자로 1.부분집합 요소, 2.확인대상 배열, for문 3.시작 값을 전달한다.
  • for문을 돌려, 전달받은 inital 3.시작 값부터 부분집합 2.확인대상의 배열 길이 만큼 돌려서 1.부분집합 요소가 있는지 확읺난다.
  • 1.부분집합 요소 가 있다면 1.부분집합 요소의 인덱스를 return 한다
  • 1.부분집합 요소가 없다면 return -1 한다.
  • function isSub 아래에서는 return 값을 변수에 누적하여 그것이 -1 이라면 return false, -1이 아니라면 for문에서 return 받은 값을 function isSub의 3.시작 값인자로 넘긴다

코드

const isSubsetOf = function (base, sample) {
  let initialIdx = 0;
  // 중복되는 요소는 없다
  // 두 배열 모두 정렬
  base.sort((a,b)=>a-b);
  sample.sort((a,b)=>a-b);
  
  //function에서 for문 돌려 배열 비교
  function isSub(sampleNum, base,initialIdx){
    for(let i = initialIdx;i<base.length;i++){
      if (sampleNum===base[i])return i
      // console.log(sampleNum,i)
    }return -1
  }
  
  
  // function 값이 -1일 경우 false
  for(let x = initialIdx; x<sample.length; x++){

    initialIdx = isSub(sample[x],base,initialIdx);
    if(initialIdx===-1)return false
  }
  return true
};

배운 것

  • include 를 쓰지 않고 더 빨리 부분집합 비교하는 방법.
  • 배열을 같이 움직이면 되는구나
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글