ㅁㄴㅇㄻㄴㅇㄹ

[코딩테스트] 프로그래머스 체육복 with javascript 본문

코딩테스트

[코딩테스트] 프로그래머스 체육복 with javascript

hanbin8269 2021. 5. 6. 17:30

문제 풀이 코드

function solution(n, lost, reserve) {
    var answer = 0;
    var duplicatedStudent = []
    for (var i = 0; i < lost.length; i++){
        if (reserve.includes(lost[i])){
            duplicatedStudent.push(lost[i]);  // #1
        }
    }

    for (var student of duplicatedStudent){
        var reserveIdx = reserve.indexOf(student);  // #2
        reserve.splice(reserveIdx,1);
        var lostIdx = lost.indexOf(student);
        lost.splice(lostIdx,1);
    }

    answer = n - lost.length;  // #3

    for (var lostedStudent of lost){
        var canReserve = false;
        for (var i of [-1,1]){
            if (reserve.includes(lostedStudent + i)){  // #4
                const idx = reserve.indexOf(lostedStudent + i);
                reserve.splice(idx,1);
                answer += 1;
                break;
            }
        }
    }
    return answer;
}

#1

체육복이 도난 당했으면서, 여분의 체육복이 있는 사람 리스트를 저장해 둔다.

#2

미리 저장해둔 체육복이 도난 당했으면서, 여분의 체육복이 있는 사람을 lost, reserve 에서 제거한다.

#3

체육 수업을 들을 수 있는 사람 = 총 인원 - 체육복 잃어버린 사람
으로 만들어두고 친구에게 빌린 사람을 하나씩 추가한다.

#4

앞 번호 뒷 번호를 검사하면서 여분의 체육복이 있는 사람에게 체육복을 빌린다.