https://programmers.co.kr/learn/courses/30/lessons/42862
최근 계속 쉬운 문제(?)만 풀다가 오랜만에 어려운 문제를 풀게되어 어김없이 막혔다!
두 배열을 어떻게 비교하여 일치하는 값은 어떻게 지워야 하는지에 대해 고민을 했다...
function solution(n, lost, reserve) {
let answer = n - lost.length;
let tmp_lost = [];
for(let i = 0; i < lost.length; i++){
if(reserve.includes(lost[i])){
reserve = reserve.filter((val) => val !== lost[i])
answer++;
}else{
tmp_lost.push(lost[i]);
}
}
lost = tmp_lost;
lost.sort((a,b) => a-b);
reserve.sort((a,b) => a-b);
for(let i = 0; i < lost.length; i++){
if(reserve.includes(lost[i] - 1)){
reserve = reserve.filter((val) => val !== lost[i] - 1);
answer++;
}else if(reserve.includes(lost[i] + 1)){
reserve = reserve.filter((val) => val !== lost[i] + 1);
answer++;
}
}
return answer;
}
solution(n, lost, reserve);
두배열을 비교하기 위해서는 for문에 includes와 filter를 활용하면 된다.
filter는 정말 손에 잘 안붙는다... 정말 많이 쓰는 메소드인데... 그래도 많이 써봐야겠다... 의도적으로라도!! 널 갖겠어!! filter 너 이놈!!