체육복

Happhee·2022년 1월 31일

[ LV1 ]  programmers

목록 보기
1/4
post-thumbnail

Greedy 알고리즘에 대한 설명은 다음을 참조하길 바란다
문제로 넘어가자


📝 체육복

🖥 나의 JS코드

function solution(n, lost, reserve) {
    // 일단 잃어버린 사람 수 만큼 빼준 것이 최소 답안
    let answer = n - lost.length;
    lost = lost.filter((number) => {
        if (reserve.indexOf(number) === -1) {
            return number;
        } // 여벌 체육복을 가져온 학생이 체육복을 도난당한 경우
        // 빌려줄 수 없으므로 삭제하고 최종답안 1증가
        else {
            reserve.splice(reserve.indexOf(number), 1);
            answer += 1;
        }
    });
    // 오름 차순으로 정렬
    lost = lost.sort((a, b) => b - a);
    reserve = reserve.sort((a, b) => b - a)

    for (let i = 0; i < reserve.length; i++) {
        // 바로 뒷번호 학생이나 앞번호 학생에게 빌려줄 수 있으면
        // 답 1 증가 시키고, lost에서 해당 학생 삭제
        if (lost.indexOf(reserve[i] + 1) != -1) {
            answer += 1;
            lost.splice(lost.indexOf(reserve[i] + 1), 1);
        }
        else if (lost.indexOf(reserve[i] - 1) != -1) {
            answer += 1;
            lost.splice(lost.indexOf(reserve[i] - 1), 1);
        }
    }
    return answer;
}
profile
즐기면서 정확하게 나아가는 웹프론트엔드 개발자 https://happhee-dev.tistory.com/ 로 이전하였습니다

0개의 댓글