문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답
function solution(n, lost, reserve) {
let newLost = lost
.filter(x => !reserve.includes(x))
.sort((a, b) => a - b);
let newReserve = reserve
.filter(x => !lost.includes(x))
.sort((a, b) => a - b);
const num = newLost.length;
let borrow = 0;
for (let i = 0; i < newLost.length; i++) {
for (let j = 0; j < newReserve.length; j++) {
if (Math.abs(newLost[i] - newReserve[j]) === 1) {
borrow++;
newLost[i] = "X";
newReserve[j] = "X";
}
}
}
return n - num + borrow;
}
// 모범 답안
function solution(n, lost, reserve) {
return (
n - lost.filter(a => {
const b = reserve.find(r => Math.abs(r - a) <= 1);
if (!b) return true;
reserve = reserve.filter(r => r !== b);
}).length
);
}