코딩익힘책 #13 체육복

나의 코드

function solution(n, lost, reserve) {
  var answer = 0;
  let student = new Array(n).fill(1);

  // 체육복 없는 친구들 보유 체육복 제거
  for (let i = 0; i < lost.length; i++) {
    student[lost[i] - 1]--;
  }

  // 체육복 여벌 있는 친구들 보유 체육복 추가
  for (let i = 0; i < reserve.length; i++) {
    student[reserve[i] - 1]++;
  }

  for (let i = 0; i < student.length; i++) {
    if (student[i] === 0) {
      if (i === 0 && student[i + 1] === 2) {
        student[i]++;
        student[i + 1]--;
      } else if (i === student.length - 1 && student[i - 1] === 2) {
        student[i]++;
        student[i - 1]--;
      } else if (student[i + 1] === 2 || student[i - 1] === 2) {
        student[i]++;
        if (student[i + 1] === 2) {
          student[i + 1]--;
        } else if (student[i - 1] === 2) {
          student[i - 1]--;
        }
      }
    }
  }

  student.forEach((person) => {
    if (person > 0) {
      answer++;
    }
  });

  return answer;
}

베스트 코드

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
}

느낀 점

일단 나는 아직 풀지 못했다.
코드실행은 문제가 없었으나 제출 후 채점하기에서 17~20 테스트를 계속해서 실패한다. 내가 어떤 특이사항을 놓친건가 곰곰히 들리며 생각해봐야겠다. 젠장... 베스트코드는 이해할 틈도 없다는 것.. 파이팅

좋은 웹페이지 즐겨찾기