A Developing Developer

DAY 33. 주특기(Node.js) Node.js 심화주차 복습 본문

내일배움캠프 4기/TIL

DAY 33. 주특기(Node.js) Node.js 심화주차 복습

H-JJOO 2022. 12. 29. 11:29
  • 오늘 한거

알고리즘 14일차, Node.js 심화주차 복습

 

  • 문제발생

배열의 차집합

 

  • 시도

https://88240.tistory.com/519

 

[Javascript] 교집합, 차집합, 배타적논리합

다음과 같이 두개의 배열이 있었을 때 let arr1 = [1, 2, 3]; let arr2 = [2, 3, 4, 5]; 두 배열의 값들을 비교하여 합, 교, 차의 값을 구하고 싶다면 다음과 같다. 1. 차집합 let difference = arr1.filter(x => !arr2.includ

88240.tistory.com

 

  • 해결방안
function solution(numbers) {
    let answer = 0;

    let base_numbers = [0,1,2,3,4,5,6,7,8,9];

    let non_numbers = []

    // 차집합
    non_numbers = base_numbers.filter(x => !numbers.includes(x));

    answer = non_numbers.reduce((a,b) => (a+b));

    return answer;
}

console.log(solution([5,8,4,0,6,7,9])) 

arr1 = [0,1,2,3,4,5,6,7,8,9]

 

arr2 = [5,8,4,0,6,7,9]

 

 arr1.filter(x => !arr2.includes(x))

 

: arr1 - arr2

 

>> [1,2,3]

 

  • 알게 된 것
let arr1 = [1, 2, 3];
let arr2 = [2, 3, 4, 5];

- 차집합 (arr1 에서 arr2 와 겹치는 부분을 뺀 것)

let difference = arr1.filter(x => !arr2.includes(x)); // 결과 1

- 교집합 (arr1 과 arr2 의 겹치는 부분)

let difference = arr1.filter(x => arr2.includes(x)); // 결과 2, 3

- 배타적논리합 (arr1 과 arr2 의 교집합을 뺀 전체)

let difference = arr1
    .filter(x => !arr2.includes(x))
    .concat(arr2.filter(x => !arr1.includes(x))); // 결과 1, 4, 5

[결론]