[프로그래머스] 체육복 - JavaScript

이은빈 EUNBIN·2021년 4월 7일
0
post-thumbnail

📌 문제

https://programmers.co.kr/learn/courses/30/lessons/42862



📌 풀이

const solution = (n, lost, reserve) => {
    let Lost = lost.filter(a => !reserve.includes(a)); //여벌이 없는데 체육복을 잃어버린 학생
    let Reserve = reserve.filter(a => !lost.includes(a)); //여벌이 있는데 체육복을 잃어버린 학생
    
    return n - Lost.filter(lostStudent => {
      	//앞, 뒤번호 학생 중 여벌이 있는지 확인
        let extra = Reserve.find(reserveStudent => Math.abs(reserveStudent - lostStudent) <= 1);
        //여벌이 없다면
      	if(!extra) return true;
        //여벌을 빌려준 뒤 Reserve 배열에서 해당 학생의 번호 제거
      	Reserve = Reserve.filter(reserveStudent => reserveStudent !== extra);
    }).length;
}

여벌이 있는지 없는지 먼저 구분해줘야 하는게 첫번째 포인트,,,,, (어렵다)
Math.abs 사용이 두번째 포인트🤔

profile
Frontend Engineer & Value Creator

0개의 댓글