PR - 체육복

Goody·2021년 3월 7일
0

알고리즘

목록 보기
59/122
post-custom-banner

문제 및 예시

지난 풀이 참고


풀이

  • 체육복을 빌려주기 전에, 본인이 체육복을 도난당했다면 아무에게도 체육복을 빌려줄 수 없으므로, lostreserve 두 배열에 중복되는 숫자를 제거한다.
  • lost 의 원소 중 값이 reserve 의 원소와 1 차이나는 원소를 찾아서, lostreserve 두 배열 모두에서 해당 원소를 삭제한다.
  • 배열 원소 삭제에 따른 인덱스 밀림 현상을 방지하기 위해, 원소 삭제가 일어날 때 마다 인덱스에 해당하는 i 혹은 j1 씩 감소시킨다.

코드

function solution(n, lost, reserve) {
    let answer = 0;
    lost = lost.sort((a,b) => a-b);
    reserve = reserve.sort((a,b) => a-b);
    

    for(let i = 0; i < lost.length; i++) {
        if(reserve.indexOf(lost[i]) !== -1)  {
            const lostNum = lost.splice(i,1);
            const idx = reserve.indexOf(lostNum[0]);
            if(idx !== -1) {
                reserve.splice(idx,1);
                i--;
            }
        }
    }

    
    for(let i = 0; i < lost.length; i++) {
        for(let j = 0; j < reserve.length; j++) {
            if(lost[i] === reserve[j] + 1 || lost[i] === reserve[j] - 1) {
                lost.splice(i,1);
                reserve.splice(j,1);
                i--;
                j--;
            }
        }
    }

    answer = n - lost.length;
    return answer;
}
post-custom-banner

0개의 댓글