- 문제
- 두개의 배열을 받아 작은게 큰것의 부분집합 인지를 검사
- 배열은 중복 요소가 없는 상태
- 배열은 100 이하의 길이를 가짐
- 시도
- 각 배열을 오름차순 sort한 후 겹치는 숫자의 뒷 인덱스부터 검사하도록 해보자
- 아이디어는 나왔는데 구현이 어려워서 이것저것 시도를 해봤다가, 결국 실패
const isSubsetOf = function (base, sample) {
let result = true;
while (sample.length > 0) {
console.log(sample)
let cur = sample.shift();
if (cur < base[0] || cur > base[base.length - 1]) {
return false;
}
let subResult = false;
for (let e = 0; e < base.length; e++) {
if (base[e] === cur) {
subResult = subResult || true;
} else {
subResult = subResult || false;
}
}
if (!subResult) return false
result = result && subResult
}
return result;
};
- 레퍼런스
const isSubsetOf = function (base, sample) {
base = base.sort((a, b) => {return a - b})
sample = sample.sort((a, b) => {return a - b})
let currentIdx = 0;
while (sample.length > 0) {
let result = false;
let exist = sample.shift();
if (exist < base[0] || exist > base[base.length - 1]) {
return false;
}
for (let i = currentIdx; i < base.length; i++) {
if (exist === base[i]) {
currentIdx = i;
result = result || true;
break;
} else {result = result || false;}
}
if (!result) {return false;}
}
return true;
};