난이도 : Level. 1
언어 : Javascript
출제 내역 : 탐욕법
체육복을 잃어버린 사람과 여벌로 가져온 사람이 있다.
양 옆에 있는 사람만 빌려줄 수 있는데,
그렇다면 체육복을 입고 체육시간에 나간 사람의 수를 구해보자
function solution(n, lost, reserve) {
var answer = 0;
let newArr = [];
for (let i = 0; i<reserve.length; i++) {
if (reserve.indexOf(lost[i]) > -1) {
let minusNum = lost[i]
lost.splice(lost.indexOf(minusNum),1);
reserve.splice(reserve.indexOf(minusNum),1);
}
}
우선 여벌로 가져온 사람이 하나를 잃어버린 경우가 있으니
그 부분을 먼저 제외해 줍니다.
잃어버린 사람과 여벌로 가져온 사람의 배열에서 해당 숫자를 제거합니다.
for (let i = 1; i<=n; i++) {
newArr.push(i)
if (lost.indexOf(i) > -1) {
newArr.pop()
if (reserve.indexOf(i) > -1) {
newArr.push(i);
reserve.splice(reserve.indexOf(i),1)
} else if (reserve.indexOf(i-1) > -1) {
newArr.push(i);
reserve.splice(reserve.indexOf(i-1),1)
} else if (reserve.indexOf(i+1) > -1) {
newArr.push(i);
reserve.splice(reserve.indexOf(i+1),1)
}
}
}
return answer=newArr.length;
}
그 다음, 새 배열에 학생 번호를 먼저 넣어주고,
잃어버린 사람인지 체크하고, 그 앞뒤 번호에 여벌로 가져온 사람이 있는지 체크해
번호를 배열에 채워준 뒤, 해당 배열의 길이를 결과로 도출합니다.