[알고리즘] isSubsetOf

이재훈·2020년 12월 29일
0

문법 및 코드

목록 보기
5/5

문제

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

  • boolean 타입을 리턴해야 합니다.

입출력 예시

let base = [1, 2, 3, 4, 5];
let sample = [1, 3];
let output = isSubsetOf(base, sample);
console.log(output); // --> true

sample = [6, 7];
output = isSubsetOf(base, sample);
console.log(output); // --> false

base = [10, 99, 123, 7];
sample = [11, 100, 99, 123];
output = isSubsetOf(base, sample);
console.log(output); // --> false


** Advanced

- 시간 복잡도를 개선하여, Advanced 테스트 케이스(`base`, `sample`의 길이가 70,000 이상)를 통과해 보세요.

풀이

첫번째 시도 - Advanced 실패

그냥 요로코롬 풀면 되겠지 했지만, 따아악 1개만 실패하고 모두 통과했다.
Advanced는 총 3개의 테스트케이스가 나왔고, 그 중 1개가 실패한 것이다.

const isSubsetOf = function (base, sample) {
  // TODO: 여기에 코드를 작성합니다.
  for(let item of sample) {
    if(base.includes(item)) {
      return true;
    }
      return false;
  }
};

두번째 시도 - 동일하게 실패

위와 동일한 테스트 케이스의 문턱을 넘지 못했다.
다시 돌아보니 달라질게 없는 코드이긴 하다.

const isSubsetOf = function (base, sample) {
  // TODO: 여기에 코드를 작성합니다.
  set1 = new Set(base);
  for(let item of sample) {
    return set1.has(item);
  }
};

...
아무래도 시간을 더 투자해서 뚫어봐야겠다 이 테스트 케이스의 문턱을..
라니스터 같은 녀석...

참고 - MDN

set : Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있다.
has(): 주어진 키를 가진 요소가 Map에 존재하는지를 반환한다. 불린값으로 출력

profile
코딩에서 인생을 배우다.

0개의 댓글