반응형
all 는 [ 0 - 9 까지의 숫자배열 ] 이고, part는 그 중 [ 몇몇 숫자만 들어있는 배열 ] 이다.
원래는 all 의 모든 숫자들을 가지고 있어야 되는데, 몇몇 녀석들이 도망가서 part 만 남았다.
도망간 녀석들이 (차집합) 누군지 찾고자 한다.
즉, 두배열을 비교해서 특정값을 찾아보려고 한다.
나는 두가지 풀이방식으로 풀어보았다.
아래에 필요한 배열들을 보자. [ 5랑 9 ] 가 집나갔으니 얘네만으로 이루어진 배열을 구할 것이다.
// 0 - 9 까지의 숫자중 5, 9 가 없다. // [5,9]
let all = [1,2,3,4,5,6,7,8,9,0];
let part = [1,2,3,4,6,7,8,0];
1. 2중 포문과 splice를 이용한다.
2중 포문으로 검사한 뒤,
all 값과 === part 값이 같으면 all 에서 제거해버리고 배신자들만 남겨놓는 방식을 택하였다.
for(var i=0; i < all.length; i++){
for(var j=0; j < part.length; j++){
if(all[i] === part[j]){
all.splice(i, 1); // [5,9]
}
}
}
2. filter 와 includes 를 이용한다.
filter 로 all 을 돌려 all 의 값이 part 배열 내에 include 되지 않는 녀석들만 솎아내는 방식을 택하였다.
(코드 구성이 훨씬 간단하고 가시성도 좋다👍)
all.filter( v => !part.includes(v)); // [5,9]
반응형
'JavaScript' 카테고리의 다른 글
JavaScript - 객체 안 배열에 반복문 사용하기 (0) | 2022.10.23 |
---|---|
JavaScript - 약수 구하기 (0) | 2022.10.22 |
JavaScript 알고리즘 (12) Naive Search (0) | 2022.10.10 |
CSS - 모달 내 특정 div 영역에만 scroll 적용하기 (0) | 2022.09.28 |
JavaScript 알고리즘 (11) Binary Search (0) | 2022.09.25 |
댓글