가오리의 코딩일기

[42862] 체육복 본문

HTML+CSS+JavaScript/프로그래머스

[42862] 체육복

류경혜 2022. 6. 16. 02:00

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

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번

programmers.co.kr

 

function solution(n, lost, reserve) {
  let answer = 0;
  let have = new Array(n).fill(1); // n만큼 1로 채워서 초기화
  for (let i = 0; i < lost.length; i++) {
    have[lost[i] - 1]--;
    // 잃어버린 것에 -1을 해서 0을 만든다
  }
  for (let i = 0; i < reserve.length; i++) {
    have[reserve[i] - 1]++;
  } // 여벌이 있다면 +1을 해서 2를 만든다
  for (let i = 0; i < have.length; i++) {
    if (have[i] === 0) {
      // 유니폼이 없으면 앞뒤 학생이 줄 수 있다
      if (have[i - 1] === 2) {
        // 앞 사람이 2개일 때
        have[i]++;
        have[i - 1]--;
      } else if (have[i + 1] === 2) {
        // 뒷 사람이 2개일 때
        have[i]++;
        have[i + 1]--;
      }
    }
    if (have[i] >= 1) {
      // 체육을 들을 수 있는 사람(원래 있고, 받은 사람)
      answer++;
    }
  }
  return answer;
}

 

'HTML+CSS+JavaScript > 프로그래머스' 카테고리의 다른 글

[72410] 신규 아이디 추천  (0) 2022.06.16
[42840] 모의고사  (0) 2022.06.16
[12982] 예산  (0) 2022.06.16
[12930] 이상한 문자 만들기  (0) 2022.06.13
[76501] 음양 더하기  (0) 2022.06.13