
문제설명
- 전체 학생수 n, 체육복을 도난당한 학생수 배열 lost, 여벌의 체육복을 가져온 학생수 배열 reserve
- 여벌의 체육복이 있는 학생은 바로 앞번호나 뒷번호 학생에게만 체육복을 빌려줄 수 있음
- 체육수업을 들을 수 있는 학생의 최대값을 반환
제한사항
- 전체 학생수는 2명이상 30명이하
- 도난당한 학생수는 1명이상 n명이하 중복없음
- 여벌의 체육복을 가져온 학생수는 1명이상 n명이하 중복없음
- 여벌의 체육복을 가져온 학생이 도난을 당하면 다른 학생에게 빌려줄 수 없음
풀이
function solution(n, lost, reserve) {
let answer = 0;
let count = 0;
for(let i=0;i<lost.length;i++){
for(let j=0;j<reserve.length;j++){
if(lost[i] === reserve[j]){
lost[i] = '*';
reserve[j] = '*';
}
}
}
for(let i=0;i<lost.length;i++){
for(let j=0;j<reserve.length;j++){
if(lost[i]-1 === reserve[j]||lost[i]+1 === reserve[j]){
lost[i] = '*';
reserve[j] = '*';
}
}
}
lost.forEach(item=>{
if(item !== '*')
count += 1;
})
answer = n - count;
console.log(answer);
return answer;
}
체크포인트
- 테스트 케이스: 8, [4, 5], [5, 6]
- 여벌이 있지만 도난당한 학생을 먼저 해결하지 않으면 5번학생은 실제로는 빌려줄 수 없지만 4번학생이 5번학생에게 여벌을 받고 5번학생이 6번학생에게 여벌을 받는 오류가 생기기 때문에 먼저 반복문을 돌려 제외시켜야함