체육복 - javascript

DonQ·2022년 5월 10일
0

CodingTest

목록 보기
30/33
post-thumbnail

문제 (출처)

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

나의 접근

  • 최근 계속 쉬운 문제(?)만 풀다가 오랜만에 어려운 문제를 풀게되어 어김없이 막혔다!

  • 두 배열을 어떻게 비교하여 일치하는 값은 어떻게 지워야 하는지에 대해 고민을 했다...

풀이

function solution(n, lost, reserve) {
    let answer = n - lost.length;
    let tmp_lost = [];
    for(let i = 0; i < lost.length; i++){
        if(reserve.includes(lost[i])){
            reserve = reserve.filter((val) => val !== lost[i])
            answer++;
        }else{
            tmp_lost.push(lost[i]);
        }
    }
    lost = tmp_lost;
    lost.sort((a,b) => a-b);
    reserve.sort((a,b) => a-b);
    
    for(let i = 0; i < lost.length; i++){
        if(reserve.includes(lost[i] - 1)){
            reserve = reserve.filter((val) => val !== lost[i] - 1);
            answer++;
        }else if(reserve.includes(lost[i] + 1)){
            reserve = reserve.filter((val) => val !== lost[i] + 1);
            answer++;
        }
    }
    return answer;
}

solution(n, lost, reserve);

오늘의 배운점 및 교훈

  • 두배열을 비교하기 위해서는 for문에 includes와 filter를 활용하면 된다.

  • filter는 정말 손에 잘 안붙는다... 정말 많이 쓰는 메소드인데... 그래도 많이 써봐야겠다... 의도적으로라도!! 널 갖겠어!! filter 너 이놈!!

profile
꾸준히 쌓아가는 코딩 Study

0개의 댓글

관련 채용 정보