프로그래머스[Level 1] 체육복(그리디)

bkboy·2022년 6월 12일
0

문제

제한 사항

입출력 예

풀이

function solution(n, lost, reserve) {
  let arr = new Array(n).fill(1);
  // [ 1, 1, 1, 1, 1 ]
  for (let x of lost) {
    arr[x - 1] -= 1;
  }
  for (let x of reserve) {
    arr[x - 1] += 1;
  }
  let answer = arr.filter((e) => e > 0).length;
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === 0) {
      if (arr[i - 1] > 1) {
        answer++;
        arr[i - 1] -= 1;
        continue;
      }
      if (arr[i + 1] > 1) {
        answer++;
        arr[i + 1] -= 1;
        continue;
      }
    }
  }
  return answer;
}
  • 학생 수와 같은 크기로 1로 초기화한 배열을 만든다.
  • lost와 reserve를 각각 순회하며 --, ++을 해주어 현재 상태를 체육복 소지 상태를 만든다.
  • 그 상태에서 순회하며 앞 뒤를 비교해준다.
profile
음악하는 개발자

0개의 댓글