문제설명

문제링크
프로그래머스(Level1) 체육복
접근 방법
- n명의 학생 모두가 체육복을 가지고 있다고 가정.
-> student 배열 1로 초기화 (1번 index부터 사용)
- 체육복을 도난당한 학생은 -1 , 여벌의 체육복을 가져온 학생은 +1을 함.
-> 각각 lost, reserve 배열에 맞춰 student배열의 값을 ± 1.
- 단방향 진행으로 여벌의 체육복을 가지고 있는 학생이 도난당한 학생에게 빌려주기
-> student 배열에서 인접한 배열의 값의 차이가 2인 경우, answer++ 과 함께 인접한 인덱스의 값을 1로 변경
코드
function solution(n, lost, reserve) {
let student = new Array(n+1).fill(1);
student[0]=0;
for(let i=1;i<=lost.length;++i){
student[lost[i-1]]-=1;
}
for(let i=1;i<=reserve.length;++i){
student[reserve[i-1]]+=1;
}
let answer = student.filter(n=>n!==0).length;
for(let i=1;i<=n;++i){
if(student[i]===0&&student[i+1]===2||student[i+1]===0&&student[i]===2){
student[i]=1;
student[i+1]=1;
answer++;
}
}
return answer;
}