프로그래머스 Lv.1 : 체육복

zeroequaltwo·2022년 11월 29일
0

코딩테스트

목록 보기
48/69

문제

프로그래머스 문제

내 풀이

function solution(n, lost, reserve) {    
    const newLost = lost.filter(num => !reserve.includes(num)).sort((a,b) => a - b);
    let newReserve = reserve.filter(num => !lost.includes(num)).sort((a,b) => a - b);
                
    let borrow = 0;
    for(var i=0; i<newLost.length; i++){
        if(newReserve.includes(newLost[i]-1)){
            borrow++;
            newReserve = newReserve.filter(num => num !== newLost[i]-1);
            // console.log(`1: ${newReserve}`);
        } else if(!newReserve.includes(newLost[i]-1) && newReserve.includes(newLost[i]+1)){
            borrow++;
            newReserve = newReserve.filter(num => num !== newLost[i]+1);
            // console.log(`2: ${newReserve}`);
        }
    }                    
                      
    return n - newLost.length + borrow;
}

개선점

  • 아래 풀이는 문제가 좀 바뀌었는지 안 맞는 테스트 케이스가 있다고 하지만 아이디어가 멋져서 갖고왔다.
  • 절대값을 이용해서 찾는 부분이 좋다.
function solution(n, lost, reserve) {      
    return n - lost.filter(a => {
        const b = reserve.find(r => Math.abs(r-a) <= 1)
        if(!b) return true
        reserve = reserve.filter(r => r !== b)
    }).length
}
profile
나로 인해 0=2가 성립한다.

0개의 댓글