// https://school.programmers.co.kr/learn/courses/30/lessons/42862
function solution(n, lost, reserve) {
// 여벌이 있는 학생만 체육복 빌려줄수있다
// 여벌을 가지고 있는 학생도 도난을 당할수있다.
// lost, reserve는 각 학생들의 index
//전체 학생 배열 생성
const student = new Array(n).fill(1)
let max = 0;
// 분실학생 for loop --
for(let i = 0; i < lost.length; i++){
student[lost[i]-1] -= 1
}
// 여분데이터 for loop ++
for(let i = 0; i < reserve.length; i++){
student[reserve[i]-1] += 1
}
for(let i = 0; i < student.length; i++){
// 각 인덱스별 계산이 완료된 student 배열을 조건에 맞는지 확인
if(!student[i]){
// 해당 학생이 가진 체육복이 없을때 확인
if(0 < i && student[i-1] === 2){
// 첫번째 학생이 아닐때만 왼쪽에 있는 학생데이터와 비교 , 왼쪽에 있는 학생이 2개 일때 여분을 준다.
student[i] += 1
student[i-1] -= 1
}else if(student[i+1] === 2){
// 오른쪽 학생이 2개 일때 여분을 준다.
student[i] += 1
student[i+1] -= 1
}
}
// 계산후 해당 학생이 체육복을 가지고 있는지 확인 후 있으면 ++
if(student[i]) max ++
}
return max
}
Comment