알고리즘 풀이

[프로그래머스]체육복(javascript)

YunHyeong 2022. 3. 11. 15:02
function solution(n, lost, reserve) {
  let loststudentNumber = n - lost.length;

  lost = lost
    .sort((a, b) => a - b)
    .filter((lostItem) => {
      if (reserve.includes(lostItem)) {
        loststudentNumber++;
        reserve = reserve.filter((reserveItem) => lostItem !== reserveItem);
        return null;
      } else {
        return lostItem;
      }
    });

  if (loststudentNumber !== n) {
    lost.map((lostNumber) => {
      if (reserve.includes(lostNumber - 1)) {
        reserve = reserve.filter((item) => item !== lostNumber - 1);
        loststudentNumber++;
      } else if (reserve.includes(lostNumber + 1)) {
        reserve = reserve.filter((item) => item !== lostNumber + 1);
        loststudentNumber++;
      }
    });
  }

  return loststudentNumber;
}

레벨 1맞니...은근히 고려할게 많은 문제였다. 테스트 케이스 13, 14에서 계속 통과가 안되서 알아보니, lost 배열을 정렬 시켜야했다.