[프로그래머스 level1] 체육복

김예지·2021년 10월 15일
1

문제

https://programmers.co.kr/learn/courses/30/lessons/42862


문제 풀이

function solution(n, lost, reserve) {
    let answer=n;
    let realLost=lost.filter(v=>!reserve.includes(v));
    let realReserve=reserve.filter(v=>!lost.includes(v));
    
    if(realLost.length===0) return n;
    
    answer-=realLost.length;
    for(let x of realLost){
        if(realReserve.includes(x+1)){
            realReserve.splice(realReserve.indexOf(x+1), 1);
            answer++;
        }
        else if(realReserve.includes(x-1)){
            realReserve.splice(realReserve.indexOf(x-1), 1);
            answer++;
        }
    }
    return answer;
}

사실 이 코드도 완성형이 아니다. 테스트케이스 17, 18번이 실패다. 그런데 다른 풀이들도 똑같이 두개씩은 테케 실패다... 이 문제만 몇일을 고민하고있는지 모르겠다.
일단 기록해놓고 나중 복습할 때 다시 풀어보자

이론

  • splice()의 반환값은 제거한 요소를 담은 배열이다.
    realReserve.splice(realReserve.indexOf(x+1), 1);만 해도 원하는 요소가 삭제된다. 만약, const a=realReserve.splice(realReserve.indexOf(x+1), 1);와 같이 한다면 삭제된 요소가 a에 담겨서 반환된다.
    이것때문에 한참 헤맸다...👊🏻
    https://webclub.tistory.com/564
profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

0개의 댓글