728x90
풀이
문제
function solution(n, lost, reserve) {
let answer = 0;
let result = [];
// 여벌이 있는 학생이 도난당한 경우 lost 와 reserve 에서 제외합니다.
let isNotReserve = reserve.filter((re) => lost.find((lo) => re === lo));
lost = lost.filter((re) => !isNotReserve.find((notReserve) => re === notReserve));
reserve = reserve.filter((re) => !isNotReserve.find((notReserve) => re === notReserve));
for (let i=1; i<=n; i++) {
const isLost = lost.find((lo) => lo === i);
if(isLost) {
// i번 학생이 체육복을 잃어버린 경우 빌릴 수 있는지 체크하여 담습니다.
const canIndex = canBeBorrow(i, reserve);
if(canIndex !== -1) {
// 빌려줬으니 배열에서 뺍니다.
reserve.splice(canIndex, 1);
result.push(i);
}
} else {
// 잃어버린 학생이 없으므로 1명 추가합니다.
result.push(i);
}
}
return result.length;
}
function canBeBorrow(lost, reserve) {
let result = -1;
const before = reserve.findIndex((re) => re === lost - 1);
if(before !== -1) {
result = before;
}
const after = reserve.findIndex((re) => re === lost + 1);
if(result === -1 && after !== -1) {
result = after;
}
return result;
}
채점결과
728x90
'Study Note > Algorithm' 카테고리의 다른 글
프로그래머스 #2021 KAKAO BLIND -신규 아이디 추천 lv1 (0) | 2022.07.04 |
---|---|
프로그래머스 #탐욕법(Greedy) - 구명보트 lv2 (0) | 2021.09.13 |
프로그래머스 #정렬 - H-Index lv2 (0) | 2021.09.12 |
프로그래머스 #완전탐색 - 소수 찾기 lv2 (0) | 2021.09.12 |
프로그래머스 #스택/큐 - 프린터 lv2 (0) | 2021.09.10 |
댓글