Array.prototype.every( ) 메서드
: 배열 안에 모든 요소가 주어진 판별 함수를 통과하는지 테스트. Boolean 값을 반환 함
Array.prototype.includes( ) 메서드
: 배열이 특정 요소를 포함하고 있는지 판별
Array.from( ) 메서드
: 유사 배열 객체(array-like-object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 Array 객체를 만듬
1st_naive solution
: 베이스에서 샘플이랑 일치하는 요소가 나오면 그 요소들만 모은 배열을 만들어서 샘플이랑 비교 후 결과 리턴
// naive solution
// : 베이스에서 샘플이랑 일치하는에 배열만들어서 똑같으면 true return 하기
const isSubsetOf = function (base, sample) {
const compare = [];
for(let i = 0; i < base.length; i++){
for(let j = 0; j < sample.length; j++){
if(sample[j] === base[i]){
compare.push(sample[j]);
console.log(compare)
}
}
}
return JSON.stringify(sample) === JSON.stringify(compare)
};
2nd_naive solution
: includes(), every() 활용
const isSubsetOf = function (base, sample) {
return sample.every((el) => base.includes(el))
};
reference code
const isSubsetOf = function (base, sample) {
// 1. 순서대로 정렬
base.sort((a, b) => a - b);
sample.sort((a, b) => a - b);
// 2. 함수 생성
// --> 요소와 배열, 순회 시작일 될 수를 받음
// --> 받은 요소와 배열이 같으면 요소의 인덱스 번호 반환
const findItemInSortedArr = (item, arr, from) => {
for (let i = from; i < arr.length; i++) {
if (item === arr[i]) return i;
else if (item < arr[i]) return -1;
}
return -1;
};
let baseIdx = 0;
for (let i = 0; i < sample.length; i++) {
baseIdx = findItemInSortedArr(sample[i], base, baseIdx);
if (baseIdx === -1) return false;
}
return true;
};
'codes > daily coding' 카테고리의 다른 글
23_bubbleSort (0) | 2022.12.22 |
---|---|
21_largestProductOfThree (0) | 2022.12.21 |
22_fibonacci (0) | 2022.12.20 |
19_decryptCaesarCipher (0) | 2022.12.11 |
18_numberSearch (0) | 2022.12.11 |