문제 링크
해결 방법
function solution(n, lost, reserve) {
const lostSet = new Set(lost);
reserve.sort((a,b)=>a-b)
reserve = reserve.filter((e) => {
if(lostSet.has(e)) {
lostSet.delete(e);
return false;
}
return true;
})
reserve.map((e) => {
if(lostSet.has(e-1)) lostSet.delete(e-1);
else if(lostSet.has(e+1)) lostSet.delete(e+1);
})
return n - lostSet.size;
}
- lost를 탐색 및 제거의 편의성을 위해 Set으로 변환합니다.
- reserve를 내림차순으로 정렬합니다.
- 여벌 체육복을 가져온 학생이 체육복을 도난당한 경우 이를 reserve와 lostSet에서 제거해줍니다.
- 여벌의 체육복을 도난당한 학생에게 빌려줄 수 있는지 번호가 작은 순서대로 확인하여 빌려줄 수 있는 경우 lostSet에서 제거합니다.
- 전체 학생 수에서 체육복을 도난당한 학생 중 옷을 빌리지 못한 학생 수를 빼줍니다.