반응형
function solution(n, lost, reserve) {
//전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 reserve
//정렬 안하면 테스트케이스 12,18이 통과가 안됨
lost.sort((a,b)=>a-b)
reserve.sort((a,b)=>a-b)
//체육복이 여벌이 있었는데 도난당해서 1벌만 남은 경우를 생각해서 교집합을 빼준다.
let realLost = lost.filter((element) => !reserve.includes(element));
let realReserve = reserve.filter((element) => !lost.includes(element));
//lost중 체육복을 못빌린 애만 남긴다
let noUniform = realLost.filter(lost=>{
//빌려줄 수 있는 애를 찾는다.(가장먼저있는 애)
let whoCanLend = realReserve.find(reserve=>{
return (reserve+1===lost||reserve-1===lost)
})//1
if(!whoCanLend){//빌려줄 수 있는 사람이 없다면
return lost
}else{//빌려줬다면, realReserve에서 빌려준사람(1)을 제외한다.
//빌린사람도 lost명단에서 빼는데 이를 return false로 나타낸다.
realReserve = realReserve.filter(el=>el!==whoCanLend)
return false
}
})
return n-noUniform.length
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
프로그래머스 : 숫자 문자열과 영단어 자바스크립트 (0) | 2021.10.27 |
---|---|
알고리즘 : 큰 수 구하기 프로그래머스 (자바스크립트) (0) | 2021.10.26 |
QuickSort 정리 (0) | 2021.10.17 |
InsertionSort 정리 (0) | 2021.10.16 |
Bubble Sort 정리 (0) | 2021.10.16 |