Skip to main content

체육복

Solution

function solution(n, lost, reserve) {
// 각 학생들이 체육복을 가져옴
const students = Array(n + 1).fill(1);

// 잃어버린 학생 누적 -1
lost.forEach((lostIdx) => (students[lostIdx] -= 1));
// 여분 가져온 학생 누적 +1
reserve.forEach((reserveIdx) => (students[reserveIdx] += 1));

// 여분 있는 학생이 빌려주기
for (let i = 1; i <= n; i++) {
if (students[i] === 2 && students[i - 1] === 0) {
students[i - 1]++;
students[i]--;
} else if (students[i] === 2 && students[i + 1] === 0) {
students[i + 1]++;
students[i]--;
}
}

// 체육복 있는 학생 수 반환
return students.filter((student) => student).length - 1;
}

Review

n + 1 하는 이유는 인덱스 계산하기 편해서 넣었다.

References