function solution(n, lost, reserve) {
lost = lost.sort((a,b)=>a-b);
reserve = reserve.sort((a,b)=>a-b);
lost = lost.filter((e)=>{
if(reserve.includes(e)){
reserve.splice(reserve.indexOf(e),1);
return false;
}
return true;
} )
return lost.reduce((acc, cur)=>{
if(reserve.includes(cur-1)){
reserve.splice(reserve.indexOf(cur-1),1);
return acc;
} else if(reserve.includes(cur+1)){
reserve.splice(reserve.indexOf(cur+1),1)
return acc;
} else {
return acc - 1
}
}, n)
}
리턴문 작성은 5분도 안걸린거 같은데 여러 엣지 케이스들을 고려하는 것에서 시간이 좀 끌렸다.
인덱스가 차례대로 온다고 가정하고 인덱스를 사용한거라 정렬을 시켜줬고,
마지막 제한 사항인 여벌 체육복을 가지고 있는 학생이 체육복을 잃어버린 경우를 필터링 해줬다.
포루프 돌리려다가 필터를 쓸 수 있을 것 같아 사용해봤는데 나쁘지 않았던 것 같다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges#