배꼽파지 않도록 잘 개발해요

99클럽 코테 스터디 20일차 TIL - 체육복 본문

코딩테스트/99클럽

99클럽 코테 스터디 20일차 TIL - 체육복

꼽파 2024. 8. 11. 00:56


function solution(n, lost, reserve) {
    // 여분의 체육복이 있는 학생과 잃어버린 학생의 교집합을 제거
    let _lost = lost.filter(student => !reserve.includes(student));
    let _reserve = reserve.filter(student => !lost.includes(student));
    
    // 순서대로 정렬해주기
    _lost = _lost.sort((a, b) => b - a);
    _reserve = _reserve.sort((a, b) => b - a);
    
    // 여분의 체육복을 가진 학생이 잃어버린 학생에게 체육복을 빌려줄 수 있는지 확인
    for (let i = 0; i < _reserve.length; i++) {
        for (let j = 0; j < _lost.length; j++) {
            // 두 학생의 번호 차이가 1이면 체육복을 빌려줌
            if (Math.abs(_reserve[i] - _lost[j]) === 1) {
                _lost.splice(j, 1); // 체육복을 잃어버린 학생 제거
                break; // 체육복을 빌려주면 다음 여분 학생으로 넘어감
            }
        }
    }
    
    // 전체 학생 수에서 잃어버린 학생 수를 뺀 값 반환 (체육복을 가진 학생 수)
    return n - _lost.length;
}

728x90