[프로그래머스/JS] 체육복

Yumin Jung·2023년 1월 21일
0

Problem Solving

목록 보기
2/5
post-thumbnail

문제 링크

해결 방법

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

0개의 댓글