본문 바로가기

자료구조&알고리즘/알고리즘-문제풀이

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

1. 첫번째 코드

- map 함수를 이용하여 element를 리스트에서 바로 지울 때 해당 리스트에 바로 적용이 되어 element를 순차적으로 돌지 못하는 문제가 있었다. 그래서 copyLost 리스트를 따로 만듬.

let n = 5;
const lost = [1, 2, 3];
const reserve = [1, 2, 3];

function solution(n, lost, reserve) {

    let answer = n - lost.length;

    lost.sort();
    reserve.sort();

    // 여벌 체육복을 가져온 학생이 체육복을 도난 당했는지 확인
    const copyLost = [];
    lost.map((element, index) => {
        if (reserve.includes(element)) {
            reserve.splice(reserve.indexOf(element), 1);
            answer += 1;
        } else {
            copyLost.push(element);
        }
    })
    

    // 여벌 체육복을 가져온 학생이 체육복을 도난 당한 학생에게 체육복을 빌려 줄 수 있는지 확인
    // lost -1 확인 => 있으면 reserve에서 지우고 answer +1
    // lost +1 확인 => 있으면 reserve에서 지우고 answer +1

    copyLost.map(element => {
        
        if (reserve.includes(element-1)) {
            reserve.splice(reserve.indexOf(element - 1), 1);
            answer += 1;
        } else if (reserve.includes(element+1)) {
            reserve.splice(reserve.indexOf(element+1), 1);
            answer += 1;
        }

    })

    return answer;
}

console.log(solution(n, lost, reserve));
반응형