문제(isSubsetOfArray)

이홍경·2021년 8월 26일
0
post-thumbnail

문제 : 두개의 배열을 입력 받아 나중에 입력받은 배열이 앞 배열의 부분집합인지 여부 리턴


let count = 0;
const leng = second.length;
for(let i of second) {
  if(first.includes(i)) {
    count++
    }
  };
if(count === leng) {
  return true;
  }
return false;
// 두번째 배열을 돌며 첫번째 배열에 값이 있는지 여부를통해 count 값을 올려 주었고,
// 최종 count값과 두번째 배열의 길이가 같은지 여부를 판단해 불리언 값을 리턴해 주었다.
// 실행에는 문제가 없었으나, 실행시간 초과라고 뜨는 것을 보니 음...뭔가 내부적으로..
// 그래서 다른 방법을 찾아 보았다...

return Array.from(new Set([...first, ...second])).length === base.length;
// 구글링으로 세상에 능력자는 많다 라는 것을 느꼈다....
// Array.from은 유사배열이나, 반복 가능한 객체 등을 얕게 복사해 새로운 배열로 만든다.
// Set 이라는 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다.
// 라고 MDN에 적혀있었다. 유일한 값이라는게 중복이 불가 하다는 것 같아 실험해 봤는데 그렇다.(모든 경우의 수는 아니지만..)
// Set객체를 만들어 스프레드 연산자를 통해 받은 두 배열을 합친다. 그러면 중복된 값이 제거되겠지...
// 그 객체의 길이는 앞에 입력받은 배열의 길이와 같다면 뒤의 배열은 앞의 배열의 부분에 속한다.

더 열심히 공부해야 겠다....

profile
개발자를 꿈꾸는 자

0개의 댓글