2020.코딩일지
[JS][코플릿]Immersive Toy Problem-03_isSubsetOf 본문
728x90
문제
두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다.
입력
인자 1 : base
- number 타입을 요소로 갖는 임의의 배열
- base.length는 100 이하
인자 2 : sample
- number 타입을 요소로 갖는 임의의 배열
- sample.length는 100 이하
출력
- boolean 타입을 리턴해야 합니다.
주의사항
- base, sample 내에 중복되는 요소는 없다고 가정합니다.
입출력예시
더보기
//입출력예시
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
👻
const isSubsetOf = (base, sample) => {
base.sort((a,b)=> a-b);
sample.sort((a,b)=> a-b); //시간복잡도를 생각하여 오름차순으로
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;
};
arr.sort()
sort() 함수는 원본 배열을 정렬하고, 원본 배열을 가리키는 배열을 리턴합니다.
문자열을 오름차순으로 정렬하기위해 (a>b)1 (a===b)0 (a<b)-1 간단하게는 (a,b) => a-b
문자열을 내림차순으로 정렬하려면??(a>b)-1 (a===b)0 (a<b)1 간단하게는 (a,b) => b-a
🫣arr.sort()는 [1, 11, 12, 30, 43, 7, 8, 9]로 정렬되고
🫣arr.sort((a,b)=>a-b)는 [1, 7, 8, 9, 11, 12, 30, 43]로 정렬된다. (비교해서 찐으로)
유니코드는 대소문자를 구분하기때문에 대문자가 앞에온다.
대소문자 구분없이 정렬하려면...찾아보기 ㅋ
파라미터가 입력되지 않으면, 문자열의 유니코드 순서대로 정렬(오름차순)
'algorithm' 카테고리의 다른 글
Big-O빅오의 시간복잡도 (0) | 2022.08.22 |
---|---|
[JS][코플릿]Immersive Toy Problem-04_bubbleSort (0) | 2022.08.19 |
[JS][코플릿]Algorithm Basic-20_compressString (0) | 2022.08.16 |
[JS][코플릿]Algorithm Basic-19_decryptCaesarcipher (0) | 2022.08.14 |
[JS][코플릿]Algorithm Basic-18_numberSearch (0) | 2022.08.14 |
Comments