728x90
[문제]
[풀이코드]
function solution(n, lost, reserve) {
var answer = 0;
const nowlost = lost.filter(lost => !reserve.includes(lost)).sort((a, b) => a - b);
const nowreserve = reserve.filter(reserve => !lost.includes(reserve)).sort((a, b) => a - b);
answer = n - nowlost.length;
for(let i =0 ; i < nowlost.length; i++){
for(let j = 0; j < nowreserve.length; j++){
if(nowlost[i] == nowreserve[j] - 1 || nowlost[i] == nowreserve[j] + 1){
answer++;
nowreserve[j] = -9;
break;
}
}
}
return answer;
}
[해설]
우선 lost배열에 들어있는 잃어버린 체육복과 reserve 배열에 들어 있는 여분 체육복 중 겹치는 부분이 있다면, 해당 배열을 제거한 뒤 다시 배열에 넣어준다. 이때 역순으로 들어가면 for문이 꼬일 수 있으므로 sort로 정렬한 뒤 넣어준다.
answer에 총 인원 수 - nowlost의 길이 즉 잃어버린 체육복의 총 수를 빼줘서 현재 체육복을 들고 있는 인원을 구해준다. nowlost와 nowreserve 2중 for문을 돌려서 nowlost[i]에 해당하는 내용과 nowreserve[j] - 1 이나 + 1의 상황 즉 체육복을 빌려줄 체격의 사람이 있다면 answer을 올려주고 해당하는 nowreserve를 체크해준다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] LEVEL 1 : 둘만의 암호 (0) | 2024.07.03 |
---|---|
[프로그래머스/JS] LEVEL1 햄버거 만들기 (0) | 2024.07.03 |
[프로그래머스/JS] 숫자 짝꿍 (0) | 2024.06.27 |
[프로그래머스/JS] 로또의 최고순위와 최저순위 (0) | 2024.06.25 |
[프로그래머스/JS] 기사단원의 무기 (0) | 2024.06.24 |