https://www.acmicpc.net/problem/1269
let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
let [N,M] = [input[0].split(' ')[0],input[0].split(' ')[1]]
let arr1 = input[1].split(' ').map(Number)
let arr2 = input[2].split(' ').map(Number)
function subtraction(a,b){
let set1 = new Set(a)
let set2 = new Set(b)
let aSubtraction = new Set([...set1].filter((x)=>!set2.has(x))).size
let bSubtraction = new Set([...set2].filter((x)=>!set1.has(x))).size
console.log(aSubtraction+bSubtraction)
}
subtraction(arr1,arr2)
- 받아온 배열을
a,b를 분리해서arr1,arr2에 넣어주고subtraction함수에 넣어준다- 두 배열을 Set에 넣어주고
filter함수로set1을 검사할때는set2에 있는지 확인해서 없으면 셋에 넣어주고 사이즈를 구해서 두개를 더해준다.
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const [_, arr1, arr2] = require('fs').readFileSync(filePath).toString().trim().split('\n');
const a = arr1.split(' ');
const b = arr2.split(' ');
let cnt = a.length + b.length;
const aAndB = [...new Set(a.concat(b))];
console.log(aAndB.length * 2 - cnt);
수학적으로 아주 쉽게 접근한 사람인데 차집합의 갯수를 구하는 공식은
n(A-B) = n(AUB) - n(B),n(B-A) = n(AUB) - n(A)이니까 문제에서 A,B 두 집합 모두 차집합을 구해야하니n(A-B) + n(B-A) = 2 * n(AUB)- (n(A)+n(B))이므로 두 배열을 합쳐서 중복을 제거한aAndB에 2를 곱하고a,b의 길이를 구해서 빼준것..